LEMP Nginx + php-fpm тайм-ауты при высокой нагрузке
Я довольно новичок во всем этом, но я OCD об оптимизации.
Я пытаюсь оптимизировать мой веб-сервер под управлением LEMP для WordPress.
Я использую WP HyperCache вместо W3 общего кеша, так как он выглядит феноменально по сравнению с моей настройкой
Я использую blitz.io для тестирования и выбрасывания 450 пользователей в домен на 60 секунд, начиная с полных 450.
Это мои результаты: Spike at 5 sec - ошибки и таймауты http://i.imgur.com/CdpBz.png
htop во время всплеска: http://i.imgur.com/OhEyS.png
Это vps w/ 2 процессор на 2,5 ГГц и 2,5 ГБ памяти, как вы можете видеть, использование памяти низкое.
nginx: worker_processes 1; рабочий_соединения 1024;
php-fpm: динамический, pm.max_children = 10, pm.start_servers = 2, pm.max_spare_servers = 2,;pm.max_requests = 500 значение по умолчанию = 0
Я увеличил nginx worker_processes до 2 без изменений, и я испортил свои настройки php-fpm без изменений. Любые идеи, на что я должен смотреть?
1 ответ
Это выглядит не так уж плохо. ~40 таймаутов из 19k запросов - это нормально. Я получил аналогичные результаты.
Что касается тюнинга:
загляните в http://wiki.nginx.org/HttpFastcgiModule - при этом вообще не затрагивается php, а nginx выполняет все операции кэширования. Вы также можете посмотреть на batcache (http://evansolomon.me/notes/faster-wordpress-multisite-nginx-batcache/)
посмотрите в apc / memcached для кеширования объектов. это делает не кэшированные запросы более быстрыми, а бэкэнд - более отзывчивым. APC также уменьшает объем памяти php. Для повседневного использования это имеет большее значение. Это также помогает, если многие ваши запросы не кэшируются (например, много новых комментариев).
рассмотрите использование php5.4, это намного быстрее и требует меньше памяти
включить кеш запросов mysql. http://mysqltuner.com/ - небольшой скрипт для настройки вашего сервера.
Измерение пиковых передач в большинстве случаев не является хорошим показателем масштабируемости. Реальные пользователи ведут себя, вероятно, иначе.
edit: попробуйте blitz.io на статической странице nginx. Если тайм-ауты все еще существуют, проблема, вероятно, в blitz.io или где-то еще. Также активируйте сжатие GZIP для ваших страниц.