У меня есть сервер Nginx + PHP5-FPM с несколькими сайтами с высоким трафиком.
Из моего понимания конфигурации пула PHP5-FPM я понял, что:
static = может использоваться для немедленного создания N дочерних процессов, поэтому их не нужно открывать/открывать, они уже открыты и могут быть использованы по мере необходимости, иначе они "спят".
dynamic = может использоваться для открытия ограниченного числа дочерних процессов и повторного появления, когда достигается лимит (минимальные/максимальные серверы).
ondemand = Я указываю максимальное количество дочерних процессов для создания, а затем, когда это необходимо, создаются дочерние процессы по мере необходимости и закрываются, когда они больше не нужны, поддерживая использование низкой памяти, но увеличивая время отклика в несколько миллисекунд.
Из моих тестов с веб-сайтом с высоким трафиком WordPress я заметил, что:
Если я использую "статический", веб-сайт уверен быстрее и может обрабатывать сразу большое количество одновременных подключений, но память всегда увеличивает его использование, а после N часов, похоже, используется почти полная доступная оперативная память. Поэтому я должен периодически использовать cronjob (каждые 1 час) перезагружать PHP5-FPM с перезагрузкой /etc/init.d/php5-fpm.
Если я использую "динамический", он использует меньше оперативной памяти, но после N одновременных подключений встречаются частые ошибки 502 (но, возможно, я настроил их не очень хорошо).
Если я использую "ondemand", сайт немного медленнее (например, время отклика 50/100 мс), но он может обрабатывать весь высокий трафик, не используя слишком много ОЗУ.
Таким образом, мой личный вывод состоял бы в том, что "ondemand" - действительно лучший метод для использования с точки зрения использования низкой/контролируемой памяти, единственным недостатком является время +50/100 мс в ответ, но в моем случае это не большая проблема.
Правильны ли мои предположения?