php-fpm não gera arquivos de dump principal apesar de estar configurado para

php-fpm não gera arquivos de dump principal apesar de estar configurado para

Estou executando o Centos 7 com php-fpm 5.4. Estou encontrando um erro SIGSEGV (sinal 11) em meus logs de erros do php-fpm e quero depurá-lo.

Eu segui o conselho dephp5 fpm: como você gera core dump do segfault?mas o php-fpm ainda nem está tentando gerar core dumps. No log de erros do php-fpm:

WARNING: [pool website.com] child 26953 exited on signal 11 (SIGSEGV) after 0.931337 seconds from start

Se um core dump tivesse sido gerado, ele seria lido, (SEGSEGV - core dumped)mas não é.

Responder1

Eu também tive problemas com isso. Parece que no centos o php-fpmprocesso mestre é iniciado com privilégios de root, que então inicia os pools individuais com privilégios reduzidos (usuário php-fpmno centos por padrão).

O obstáculo para mim, e suspeito para você também, é que se um processo alterou seus próprios privilégios de execução, não será permitido produzir um arquivo de dump principal, a menos que /proc/sys/fs/suid_dumpableesteja configurado para permitir isso. Veja informações sobre este controle em nível de kernelaqui.

Responder2

Consegui resolver esse problema com o seguinte:

  1. Adicionado ao arquivo /etc/systemd/system.conf:

DefaultLimitCORE=infinity

  1. Alterado o kernel.core_pattern:

sysctl kernel.core_pattern='| /usr/lib/systemd/systemd-coredump %p %u %g %s %t %c %e'

  1. Configuração recarregada do systemd:

systemctl daemon-reload

Como uma etapa extra para o php-fpm, a seguinte diretiva precisa ser definida nos arquivos individuais do pool php-fpm que você deseja monitorar:

rlimit_core = ilimitado

O diretório padrão para o programa systemd-coredump é /var/lib/systemd/coredumpassim, você deverá ver os arquivos de despejo gerados aqui.

Responder3

Usuário do switcher PHP-FPM antes de iniciar os pools. Por isso tive que mudar fs.suid_dumpablepara 1conforme mencionado em

https://itnext.io/linux-processes-core-dumps-systemd-coredump-and-debian-cf2ddb11ef9e

sysctl -w fs.suid_dumpable=1

informação relacionada