Я пытаюсь решить эту проблему на VPS Debian на основе 8 ГБ ОЗУ - 2vCores
Я использую nginx и php7-fpm
, проверяя /var/log/php7.0-fpm.log у меня есть большое количество этих строк
WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 16 children, there are 0 idle, and 7 total children
это мой /etc/php/7.0/fpm/pool.d/www.conf
pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
;pm.process_idle_timeout = 10s;
pm.max_requests = 200
Кто-нибудь может помочь мне решить эту проблему?
Я увеличил значения до
pm.max_children = 100
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10
pm.max_requests = 500
В журнале ошибок я продолжаю получать
[06-Oct-2016 16:35:08] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 4 idle, and 17 total children
Ошибка возникает при поступлении запроса. а PHP-FPM должен запустить новый дочерний процесс для обслуживания запроса вместо использования существующего.
Это происходит из-за того, что в конфигурации пула установлены очень маленькие числа.
Цифры означают, что вы разрешаете работает максимум 10 одновременных процессов PHP. Вы начинаете с 2 дочерних элементов и имеете только один минимальный сервер, готовый обслуживать запросы в любой момент. Если на вашем веб-сайте есть время простоя, то PHP-FPM закрывает незанятые процессы, чтобы максимум три процесса были готовы обслуживать запросы.
Я бы умножил pm.max_children
, pm .start_servers
, pm.min_spare_servers и
ps.max_spare_servers` номера каждого по 5, что было бы подходящим начальным числом.
Затем вы можете просто отслеживать свой трафик и проверять, появляются ли эти ошибки снова , затем измените числа соответствующим образом.