Назад | Перейти на главную страницу

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

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

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

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

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

Мы перешли с Apache 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-код действительно не ужасен, ответ заключается в том, что любое из этих решений должно справиться с нагрузкой. Вам следует использовать то, что вам наиболее знакомо и которое вам проще всего настроить и управлять.