Обычно я кодирую на PHP и всегда использую apache. Я открыл свой собственный веб-сайт, но вскоре понял, что apache - не лучшее решение: он использует 15 МБ памяти на страницу, из-за чего на небольшом сервере не хватает памяти с примерно 200 одновременными пользователями.
Теперь я искал другие решения и быстро взглянул на lighttpd или nginx, поэтому мой вопрос:
использование более легкого варианта, такого как два выше, позволит моим серверам обрабатывать больше пользователей? Причина, по которой я спрашиваю, также заключается в том, что, поскольку мой веб-сайт растет по мере того, как я печатаю здесь, на стороне сервера будут серьезные расходы, продолжаясь таким образом, когда у меня будет 2000 пользователей, мне понадобится 10 веб-серверов. , это неприемлемо.
Я также читал о node.js и Express, будут ли они подходящими альтернативами для PHP? Я не разрабатываю приложение реального времени, такое как чат, а что-то вроде форума.
Заранее спасибо.
Это сильно зависит от «профиля» вашего веб-сайта / веб-приложения.
Много ли он использует SQL, вы обслуживаете больше динамического контента или больше статического?
Сколько запросов в секунду у вас есть?
Я прошел через вашу ситуацию несколько месяцев назад, у меня также был быстрорастущий веб-сайт, и я не знал, что делать, после некоторых исследований и тестирования я выбрал следующий набор инструментов:
php-fpm dameon
Кэширование APC
подключение lighttpd / fastcgi к демону fpm
Он работает очень хорошо, до этого я просто использовал apache / php с eaccelerator, и он боролся со скоростью 50 запросов в секунду.
Теперь у меня 300+ запросов в секунду на одном и том же оборудовании, сервер даже не потеет.
Одним из преимуществ lighttpd / nginx или подобных им является возможность обслуживать статические файлы с очень маленьким размером и небольшими накладными расходами, тогда как apache без fastcgi будет использовать довольно большую площадь, даже если обслуживает статические файлы.
php-fpm позволяет отделить предварительную обработку от уровня обслуживания вашей инфраструктуры в сочетании с кэшированием APC, что обеспечивает хорошую производительность набора инструментов.
Nginx, безусловно, будет использовать меньше памяти, чем Apache. Одна из проблем заключается в том, что большинство хостинг-провайдеров предоставят вам панель управления для настройки Apache, но немногие делают это для nginx. Это означает, что вам придется настраивать сервер вручную, это также означает, что вы вряд ли получите поддержку от своего хоста. Администрирование веб-сервера с 2000 одновременными пользователями, использующими программное обеспечение форума, сложно. Возможно, это сайт сообщества, который потерпит некоторое время простоя и который вы быстро освоите, но вы должны помнить об этом аспекте. Вы сможете уменьшить использование памяти Apache, отключив все неиспользуемые модули и запустив PHP как fast-cgi вместо модуля Apache. Проведите небольшое тестирование.
nodejs действительно крутой и не требует много памяти, однако вам придется изучить совершенно новую парадигму программирования. Это реальная альтернатива, но другое дело, будет ли это реальной проблемой для вас.
Я бы полностью использовал nginx. Сколько памяти у вашего текущего сервера? Вы уверены, что проблема в PHP? Это также может быть сервер mysql (если есть), который использует всю память, если это форум
вы можете попробовать использовать nginx в качестве обратного прокси + сервер статического содержимого и при этом иметь apache для обработки ваших динамически генерируемых страниц [php и т. д.]. Таким образом вы сможете работать со знакомой средой и получить выгоду от меньшего объема памяти / процессора, занимаемого nginx.
вам нужно будет запустить apache на другом порту или другом IP-адресе и выполнить простую логику маршрутизации запросов в nginx.
для учебников посмотрите, например Вот.
по поводу альтернатив - испытайте удачу на переполнение стека. nginx также должен хорошо работать как обратный прокси для nodejs.