nginx + PHP-FPM (7.0) trava em alguns pedidos

2

Estou passando por um problema estranho com a compilação de aplicativos da Web hospedados no nginx + PHP-FPM com o Symfony2. Basicamente, de tempos em tempos, há uma solicitação que não é tratada. Em vez disso, o navegador mostra que está aguardando para começar a receber (a roda no chrome está girando no sentido anti-horário).

Não tenho nada em logs de erro que me ajudem a identificar o problema, nem no próprio log do aplicativo (Symfony 2.8), nem nos logs do nginx nem do php-fpm.

O que é estranho é que não há tempo limite, o que sugeriria que o php-fpm nem recebia esse pedido (certo?).

Talvez haja alguém que tenha experimentado tais problemas antes e possa conhecer a causa provável?

Devo fornecer algo que pareça relevante (arquivos de configuração?), não hesite em perguntar nos comentários.

    
por user401676 21.02.2017 / 17:17

2 respostas

1

Eu tenho o mesmo problema. O que eu descobri é que, se o processo não for concluído, não haverá entradas de log. Então o pedido entra no nginx e é retransmitido para o upstream, php-fpm. O php-fpm não responde e o nginx expira o upstream. O php-fpm continua operando. Então, o que eu vejo processos acumulando ao longo do tempo preso na chamada flock (). Olhando para a pilha, eu encontrei isso devido a tentar obter um bloqueio de arquivo em um arquivo de depuração. Eu sugiro que você verifique os arquivos abertos do php-fpm para ver se algo está travado ou em execução, lsof |grep php-fpm . Em seguida, use strace ou gdb para depurar o problema ainda mais.

No meu caso, eu estava chamando file_put_contents com um bloqueio exclusivo, que, por qualquer motivo, o PHP não é capaz de obter algumas vezes e apenas trava, para sempre.

Backtrace

0 0x00007f03f7081a67 in flock () from target:/usr/lib/libc.so.6

1 0x000055db7b9ecae6 in ?? ()

2 0x000055db7b9e83ad in _php_stream_set_option ()

3 0x000055db7b93e78e in ?? ()

4 0x000055db7badf0a3 in execute_ex ()

5 0x000055db7bae6fad in zend_execute ()

6 0x000055db7ba34c65 in zend_execute_scripts ()

7 0x000055db7b9cfb89 in php_execute_script ()

8 0x000055db7b7a1543 in ?? ()

9 0x00007f03f6fbaf4a in __libc_start_main () from target:/usr/lib/libc.so.6

10 0x000055db7b7a230a in _start ()

    
por 14.06.2018 / 15:01
0

Bem NGINX é ótimo, embora não funcione corretamente. Você precisa de algum ajuste. o que você fez até agora?

Veja este guia simples. Existem muitos outros parâmetros além dos descritos aqui: link

A fila de pendências Processos de trabalho Conexões Keepalive HTTP2

E muito mais ... No meu caso, uma vez tive um problema como este e resolvi aumentando meu limite de fila (fila de pendências)

    
por 14.06.2018 / 16:16