У меня проблема с nginx + php7.0-fpm.nginx php-fpm конфигурация, поражающая детей ограничение
Тестирование выполняется на чистом сервере php без каких-либо установленных сервисов.
Я получаю следующее предупреждение.
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 35 total children
И это сильно замедляет работу сервера.
Я использую AWS t2.medium instance
- 2vCPU и 4GB RAM.
Мои php7.0-fpm/www.conf
созданы выглядит как
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 20
pm.max_requests = 500
У меня есть приложение Laravel, что я использую для тестирования, который просто отвечает на запросы {"m":"OK"}
.
Я проверил, что с помощью apache2-utils
ab -n 1000 -c 50 https://mytestserver.com/
ответ от ab
теста ->https://ghostbin.com/paste/528tw
И я наблюдаю использование процессора с помощью htop
.
Использование двух процессоров быстро достигает 100% во время теста ab
. Однако использование памяти - только 400MB
.
Почему он слишком сильно использует процессор? Что мне делать, чтобы получить ВНИМАНИЕ от php-fpm?
Что я делаю неправильно? Прошу вас, провери меня.
Спасибо.
Я думаю, вы не должны порождать гораздо больше детей, чем ядра процессора. у вас всего 2 виртуальных ядра, я бы только породил 2 дочерних сервера. – DanFromGermany
@DanFromGermany, который один из вечера. относится к дочерним серверам? – moeseth
'nginx' намного быстрее, когда речь идет о принятии запросов, чем PHP в их обработке. Это означает, что «nginx» подает «php со слишком большим количеством запросов и« fpm »не может своевременно обрабатывать его, дети заняты, и вы получаете это предупреждение. Вы не можете исправить это, потому что вы нажмете на предельный уровень ЦП - или, если хотите, это будет так же быстро, как PHP будет «идти» на вашем сервере. Когда этот сценарий случается, этот веб-сервер работает намного быстрее, тогда мы начинаем использовать несколько серверов с 'php-fpm', а nginx может балансировать между ними. Поднятие любой из этих конфигурационных переменных ничего не сделает, вы выйдете из ядра и мощности процессора. – Mjh