Что было бы лучше в моем случае - apache, nginx или lighttpd?

Я пишу PHP-сайт, который, как ожидается, получит около 200-300 одновременно работающих пользователей. При инициализации приложения будет загружено около 30 классов PHP, около 10, может быть, 15 изображений и пара файлов CSS.

Итак, мой вопрос: что еще я могу сделать (кроме оптимизации моего кода и использования apc / eaccelerator для PHP), чтобы максимально приблизиться к числу одновременных пользователей?

В настоящее время мы не выбрали сервер для размещения сайта, но, скорее всего, это будет двухъядерный VPS + 2 или 4 ГБ ОЗУ. Возможно ли, чтобы такой сервер справился с такой нагрузкой? Кроме того, как я мог проверить это сам и быть уверенным, что он сможет справиться с этим?

2 ответа

Решение

Я лично рекомендовал бы Apache, используя mpm_worker с FastCGI PHP, eAccelerator и, возможно, кешированием диска через mod_disk_cacheв зависимости от вашего приложения PHP. Если вы используете PHP для создания статических, кешируемых файлов, таких как изображения, JavaScript или CSS, или если ваш контент кешируется, вы можете заметить значительное повышение производительности.

Мы перешли с Apache's mpm_prefork + mod_php в mpm_worker, FastCGI PHP и mod_disk_cacheи мы увидели резкое улучшение скорости. Одна из причин заключается в том, что мы используем PHP для минимизации файлов JS и CSS и даже просто вызываем PHP для readfile() кэшированный минимизированный JS-файл намного медленнее, чем Apache с mpm_worker обслуживать этот файл из дискового кэша.

Многие люди предпочитают lighttpd выше Apache любой ценой, утверждая, что Apache раздутый и медленный. Я использовал lighttpd раньше, и это было довольно гладко, но по моему опыту Apache может быть настроен для максимальной производительности, и mpm_worker Модуль дает вам ту же базовую концепцию потоков, на которой основан lighttpd.

Re: RAM, получите столько, сколько сможете! Если вы можете позволить себе 4 ГБ, сделайте это. Вы будете рады, что сделали.

Для тестирования производительности есть много отличных инструментов, но я считаю, что инструмент тестирования Apacvhe, поставляемый с Apache, является быстрым и простым способом тестирования производительности. Специфика его использования требует отдельного вопроса:-)

Если ваш PHP-код действительно ужасен, ответ таков: любое из этих решений должно справиться с нагрузкой. Вы должны пойти с тем, что вам наиболее знакомо и проще всего в настройке и управлении.

Другие вопросы по тегам