Como esta questão ainda aparece nas perguntas não respondidas, tentarei uma resposta desatualizada. Mostrar um erro é o comportamento pretendido da configuração "pm.max_children", de acordo com o manual do PHP :
The number of child processes ... to be created when pm is set to dynamic.
This option sets the limit on the number of simultaneous requests that will be served.
No entanto, cada solicitação deve ser tratada rapidamente, para que o processo fique livre para a próxima solicitação. Caso contrário, nginx
provavelmente reportará um "502 Bad Gateway" assim que não conseguir mais solicitações.
Verifique novamente o valor definido na configuração php-fpm
de listen.backlog
. Isso define o tamanho da fila ( referência ):
The backlog argument defines the maximum length to which the queue of pending connections
No entanto, esse valor é limitado pelo sistema subjacente. Veja:
sysctl net.core.somaxconn
Até onde eu sei, não há como enfileirar um pedido para o upstream ( php-fpm
), se isso gerar um erro. No entanto, você pode dizer ao nginx para mudar para outro processo, se o erro ocorrer. Isso pode acionar um recarregamento do lado do cliente, por exemplo.
Se não for a configuração listen-backlog
/ net.core.somaxconn
, a pergunta real, no entanto, é por que as solicitações bloqueiam o processo php-fpm
por tanto tempo.