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