Como você depura um erro de segfault do kernel php5-fpm?

3

Algumas semanas atrás, meu daemon OSSEC começou a enviar-me syslogs sobre um segfault no meu php5-fpm . Aqui está a parte dos logs:

Dec 19 15:09:38 mydropplet kernel: [165740.998932] php5-fpm[26936]: segfault at 7fff621ad001 ip 000000000079fe74 sp 00007fff621a5040 error 6 in php5-fpm[400000+800000]

Então eu espiei em meus logs de erro para ver se eu tinha alguns erros PHP em algum lugar que estavam causando o segfault (desde que eu não sei o que isso significa, mas parece que é algo no núcleo PHP) Meus logs de erro nele (identificando informações removidas):

2015/12/19 01:36:49 [error] 6177#0: recv() failed (111: Connection refused) while resolving, resolver: xxx.xxx.xxx.xxx:xx
2015/12/19 01:36:54 [error] 6177#0: gv.symcd.com could not be resolved (110: Operation timed out) while requesting certificate status, responder: gv.symcd.com
2015/12/19 02:00:06 [error] 6178#0: recv() failed (111: Connection refused) while resolving, resolver: xxx.xxx.xxx.xxx:xx
2015/12/19 02:00:11 [error] 6178#0: recv() failed (111: Connection refused) while resolving, resolver: xxx.xxx.xxx.xxx:xx
2015/12/19 02:00:16 [error] 6178#0: recv() failed (111: Connection refused) while resolving, resolver: xxx.xxx.xxx.xxx:xx
2015/12/19 02:00:21 [error] 6178#0: recv() failed (111: Connection refused) while resolving, resolver: xxx.xxx.xxx.xxx:xx
2015/12/19 02:00:26 [error] 6178#0: recv() failed (111: Connection refused) while resolving, resolver: xxx.xxx.xxx.xxx:xx
2015/12/19 02:00:31 [error] 6178#0: recv() failed (111: Connection refused) while resolving, resolver: xxx.xxx.xxx.xxx:xx

Então eu dei uma olhada nos meus syslogs que tinha isso nele. Esta é a mesma parte dos logs que eu estava vendo nos e-mails da OSSEC:

Dec 19 09:44:06 mydomain kernel: [146209.162601] php5-fpm[13787]: segfault at 7fff621ad001 ip 000000000079fe74 sp 00007fff621a5040 error 6 in php5-fpm[400000+800000]

Aqui está o restante do registro:

Dec 19 09:44:59 mydomain postfix/anvil[26420]: statistics: max connection rate 1/60s for (smtp:195.22.126.137) at Dec 19 09:41:39
Dec 19 09:44:59 mydomain postfix/anvil[26420]: statistics: max connection count 1 for (smtp:195.22.126.137) at Dec 19 09:41:39
Dec 19 09:44:59 mydomain  postfix/anvil[26420]: statistics: max cache size 1 at Dec 19 09:41:39
[...]
Dec 19 09:41:39 mydomain postfix/smtpd[26418]: connect from unknown[195.22.126.137]
Dec 19 09:41:39 mydomain postfix/smtpd[26418]: disconnect from unknown[195.22.126.137]

Sou muito novo em servidores autogerenciados, por isso não sei como depurar este. Eu gerencio meu site pessoal neste servidor e a única coisa que eu fiz algumas semanas atrás foi instalar um novo plugin do repositório Wordpress, devido a falta de tempo para pesquisar uma configuração apropriada Eu rapidamente o acionei e configurei, e ele bloqueou o front end do meu site. Então eu o desativei, e decidi dar uma chance mais tarde. Depois disso, os erros do kernel começaram a acontecer.

Então eu desinstalei o plugin completamente pensando que poderia ser a causa, mas não resolveu nada. O plug-in teria apenas acesso de gravação ao meu diretório da web e não teria sido capaz de alterar nenhuma configuração principal. Não tenho certeza se há uma conexão lá, mas pensei em mencioná-la.

Eu também tenho executado essa configuração do PHP desde outubro sem problemas. Eu não adicionei nenhum módulo novo / estranho no PHP. É basicamente fora da caixa, exceto por algumas precauções de segurança. Antes de ver o erro, executei um dist-upgrade como parte da minha manutenção regular:

sudo apt-get dist-upgrade
sudo apt-get update
sudo shutdown -r now

Isso aconteceu mais ou menos na mesma hora que a instalação do plug-in. Na tentativa de corrigir os erros, executei os comandos novamente, pensando que, se houvesse um bug, certamente um patch teria sido enviado. Isso, no entanto, não ajudou. Então, estou perdendo o que posso fazer para vencer isso.

Atualização: voltei para um instantâneo anterior, e tudo funcionou por cerca de uma semana, depois comecei a receber e-mails novamente sobre o mesmo problema de falha de seg logo após o Natal. Então estou de volta à estaca zero.

Qualquer conselho seria ótimo! Estou executando o servidor LEMP Ubuntu 14.04 LTS . Como faço para depurar um problema como este? Obrigado por qualquer ajuda antes do tempo.

    
por mrClean 29.12.2015 / 19:58

1 resposta

1

Se você acha que o erro está relacionado ao Nginx, você deve postar seus logs Nginx relacionados. Há referências a resolver em seus registros postados, que podem estar relacionados ao Nginx.

Se o resolvedor Nginx estiver com falha, você poderá solucionar o problema usando IPs brutos em sua configuração Nginx em vez de nomes de domínio.

Além disso, verifique sua versão atual de php5-fpm vs a versão mais recente disponível em seu repositório Git. Em seguida, verifique o Changelog do projeto em busca de alterações mais recentes que a versão que você está usando. Se houver uma versão mais recente disponível, consulte a atualização.

Segfaults implicam em um bug de software, não em um problema de configuração. Mesmo se o rosto de uma configuração ruim, o software não deve segfault. Uma vez que parece php5-fpm foi o processo que segfaulted, considere relatar o bug em sua lista de discussão ou rastreador de problemas, se não for corrigido na versão mais recente.

Também é possível que o software rodando via php5-fpm seja o que o segfault e o php5-fpm é apenas o mensageiro que envia o aviso de um segfault. Mais uma vez, o projeto php5-fpm será a referência autoritativa para descobrir como sair os segfaults com esse software.

    
por Mark Stosberg 01.02.2016 / 17:27