O parâmetro max_requests do PHP-FPM causa 502

1

Em uma configuração usando nginx com PHP-FPM v5.3.3 , notei os seguintes erros ocorrendo com freqüência no log de erros do nginx:

Feb 16 15:00:22 mymachine www.example.com 2015/02/16 15:00:20 [error] 20254#0:
*1448249 readv() failed (104: Connection reset by peer) while reading upstream
[...]

Olhando para o arquivo php-fpm.log , notei o seguinte:

[16-Feb-2015 15:00:20] NOTICE: [pool www] child 22279 exited with code 0 after
47983.681002 seconds from start
[16-Feb-2015 15:00:20] NOTICE: [pool www] child 10625 started

Isso é reciclagem de trabalhadores, conforme definido pela diretiva de configuração pm.max_requests .

Eu (razoavelmente) assumi que o PHP-FPM processaria, de maneira cortês, qualquer conexão / solicitação aceita antes de reciclar o trabalhador, já que esta tarefa não implica em nenhum tipo de emergência.

  1. É um erro de configuração?
  2. É uma falha do PHP-FPM 5.3.3?
  3. É uma falha de toda a versão do PHP-FPM?
por Bernard Rosset 16.02.2015 / 15:39

1 resposta

1
  1. Não. É válido.
  2. pode ser. Você deve realmente considerar a atualização pelo menos no último 5.3.x, mas é melhor atualizar para alguns 5.x recentes, já que o 5.3.x não é mais suportado.
  3. Não. Eu tinha essa configuração trabalhando em todas as versões. Além disso, ter pm.max_requests set é uma prática comum.

Pode ser que você tenha poucos funcionários trabalhando. Você deve realmente investigar o número de trabalhadores ocupados e em execução, o php-fpm tem um recurso interno para isso, pm.status_path - você pode ver o que há nele com o wget ou qualquer outro cliente http:

[root@sol etc]# wget -O - -q http://localhost/status
pool:                 www
process manager:      dynamic
start time:           29/Jan/2015:11:36:20 +0300
start since:          1633615
accepted conn:        996160
listen queue:         0
max listen queue:     0
listen queue len:     0
idle processes:       34
active processes:     1
total processes:      35
max active processes: 18
max children reached: 0
slow requests:        0

Ele diz que eu tenho um processo ativo e um ocioso - portanto, estou bem. O número de processos ocupados era de 18 no máximo, então eu estava bem o tempo todo desde o início.

    
por 17.02.2015 / 07:25