Avisos de falha de segmentação do servidor da web Linux / apache

2

Ultimamente tenho recebido muitos avisos de falha de segmentação no meu servidor web.

Os avisos parecem:

[notice] child pid xxxx exit signal Segmentation fault (11)

Eu consultei o provedor do servidor (é um servidor corporativo redhat dedicado) e eles não conseguiram encontrar nada.

O que eu fiz até agora:

Desde o erro, eu já tentei o seguinte:

  • Eu adicionei mais memória ram
  • Desliguei / liguei vários módulos php (eles me enviaram para uma página web alguém teve o mesmo problema, causado por uma quantidade excessiva de módulos php)

Nos momentos em que os avisos ocorrem, parece haver bastante memória RAM livre e o número de processos é muito baixo (o número de processos httpd é de cerca de um quarto do máximo permitido).

O que pode estar causando esses erros?

Editar: versões atuais

  • apache: 2.0.52
  • php: 5.2.8
  • RHEL 4

Editar 2: Embora eu tenha feito isso há muito tempo, nunca consegui resolvê-lo até fazer o upgrade para o php 5.3.

    
por jeroen 28.05.2009 / 02:16

8 respostas

2

Observamos muitas vezes o erro "Erro de segmentação do sinal de saída (11)". Isso acontece quando alguns scripts não são concluídos enquanto o apache falha.

Se você estiver usando um site baseado em PHP no apache, é muito provável que isso aconteça.

Se você estiver usando PHP Verifique a seguinte configuração na configuração do php em conf.d / php.conf:

    PHP SetOutputFilter     SetInputFilter PHP     LimitRequestBody 524288

Remova a linha LimitRequestBody. e observe. O erro deve desaparecer.

Além disso, se você estiver usando o apache com as seguintes versões do php, trabalhe perfeitamente. apache 2.0.43 e php 4.3.0_RC1

Observação: essa resposta é puramente baseada em minhas pesquisas anteriores sobre o erro e o problema enfrentados por mim. Deixe-me saber sua configuração atual e feedback.

    
por 28.05.2009 / 06:46
2

What can be causing these errors?

Uma coisa que seria útil para diagnosticar o problema é se você tentar encontrar quais páginas / recursos estão sendo visualizados quando esse erro ocorrer. Se você conseguir verificar seu log de acesso para ver o que está acontecendo ao mesmo tempo, o segfault acontece.

É possível que algum script php ou outra coisa esteja fazendo algo que esteja causando o travamento. Depois de descobrir qual página / arquivo está causando a falha, você pode descobrir o que está fazendo ou se há uma correção de bugs disponível.

    
por 28.05.2009 / 02:35
2

OK, uma falha de segmentação é uma indicação de um bug do programa; não é uma questão de ter pouca memória. Ocorre quando um programa tenta acessar a memória e não tem permissão para acessar.

Se estiver acontecendo no Apache, você precisa ativar os dumps principais e reiniciar o processo httpd. Há um guia para fazer isso na documentação do Apache .

    
por 28.05.2009 / 03:07
1

Você atualizou o Apache ou qualquer um dos seus módulos recentemente? Eu vi esse problema quando você tem um mod que foi construído contra uma versão de interface diferente (expat no meu caso) eu acho. Se você puder reduzi-lo a algumas partes do software, verifique todas as informações da versão para isso. Consulte o link

    
por 28.05.2009 / 02:25
1

Muitas vezes, quando vejo isso, ele é causado por um script PHP que faz uma recursão infinita. Você pode usar o registro de data e hora em seu error_log para identificar as solicitações do access_log que podem ter causado o problema. Se houver qualquer pedido de script PHP, você (ou seus desenvolvedores) deve dar uma olhada nessas páginas e ver se há algum problema potencial lá.

Jim.

    
por 28.05.2009 / 02:26
1

Eu recentemente tive um desses erros no outro dia e foi relacionado ao MySQL não ter acesso adequado ao banco de dados para o Cacti.

Havia uma matriz no arquivo global_forms.php que definia uma matriz como um dos valores para uma chave. Esse array tinha uma chave e o valor chamava uma função para carregar um valor de configuração do banco de dados. Eu nunca teria esperado que a combinação resultasse em uma falha de segmentação, mas depois de rastreá-la não havia outra causa.

    
por 30.05.2009 / 19:15
1

Você tem o mod certo? O que baixou? Eu tive uma situação parecida onde baixei o mod_jk para o Solaris, mas o Apache que eu estava rodando foi incluído da Sun, e não foi compilado com o gcc, mas com seu compilador. Eu tive que baixar o mod \ jk source e compilar com o compilador Sun.

É um tiro no escuro, eu sei, mas desde que nenhuma resposta é marcada como escolhida, eu pensei em jogá-la lá fora.

    
por 17.08.2009 / 22:41
1

Verifique este blog entnry para obter detalhes sobre como trabalhar com os dumps principais para encontrar o bug no código PHP:

link

Este não é o meu post no blog - acabei de descobrir e achei útil.

Scott

    
por 29.09.2010 / 04:28