У меня возникают проблемы с обслуживанием одновременных трудоемких запросов, поступающих с одного IP-адреса.
Что происходит, так это то, что сервер ожидает завершения первого запроса перед отправкой второго ответа на запрос.
Моя конфигурация - AWS EC2 с 2 виртуальными ядрами (я считаю, что это полезно для обработки одновременных вычислений).
Запрос проходит через сервер Nginx в процесс php-fpm. Я думал, что проблема в том, что я неправильно сконфигурировал PHP-FPM. Однако после прочтения информации это моя конфигурация php-fpm:
$ cat www.conf | grep max_children
; static - a fixed number (pm.max_children) of child processes;
; pm.max_children - the maximum number of children that can
; pm.max_children - the maximum number of children that
pm.max_children = 5
$ cat www.conf | grep start_servers
; pm.start_servers - the number of children created on startup.
pm.start_servers = 2
$ cat www.conf | grep min_spare_servers
; pm.min_spare_servers - the minimum number of children in 'idle'
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
pm.min_spare_servers = 1
$ cat www.conf | grep max_requests
;pm.max_requests = 500
$ cat www.conf | grep max_children
; static - a fixed number (pm.max_children) of child processes;
; pm.max_children - the maximum number of children that can
; pm.max_children - the maximum number of children that
pm.max_children = 5
Что мне не хватает? Где мне искать, чтобы отладить такое поведение
Не стесняйтесь сообщать мне в комментариях, если вам нужна дополнительная информация, чтобы помочь мне, я всего лишь младший ...
Спасибо всем и хороших выходных
Количество работающих PHP-воркеров действительно невелико, поэтому может случиться так, что первый запрос использует все доступные воркеры для завершения, и поэтому второй запрос блокируется.
Попробуйте со следующими настройками:
pm.max_children = 20
pm.start_servers = 5
pm.min_spare_servers = 3
Фактические полезные числа зависят от вашего фактического трафика. В принципе, max_children
- это максимальное количество одновременно доступных воркеров, которые могут обслуживать отдельные запросы, и вам нужно иметь там правильное значение, соответствующее вашему трафику.