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 ()