O Apache continua falhando e não reinicia corretamente - Endereço já em uso: make_sock: não foi possível vincular ao endereço

1

Eu tenho um VPS com 1GB de RAM rodando o CentOS 5.4

Ele também tem o plesk rodando com um número de sites wordpress rodando sem problemas - na maioria das vezes.

Recentemente, parece que de vez em quando, o apache parece cair. Se você ligar para www.mysite.com, parece que o tempo limite.

Eu tentei reiniciar o apache e obter o seguinte erro.

Stopping httpd:                                            [FAILED]
Starting httpd: (98)Address already in use: make_sock: could not bind to address                                                [::]:80
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
                                                           [FAILED]

Agora eu sei que 100% não há outro serviço em execução na porta 80 que não seja o apache. Mas o apache não parece estar respondendo ao comando de parada. É quase como se estivesse preso no limbo!

Eventualmente, descobri que posso forçar manualmente o apache a parar, executando

killall -9 httpd

Em seguida, um comando de reinicialização funciona.

Minhas perguntas são:

1.) O que causaria algo assim acontecer? O servidor não recebe nenhum tráfego importante ao meu conhecimento. 2.) O que posso fazer no servidor para executar automaticamente o comando acima se isso acontecer quando eu não estiver por perto para fazer isso manualmente.

Obrigado,

Ed

    
por Ed Bloom 08.12.2010 / 17:54

3 respostas

1

Eu tive um problema semelhante com alguns plugins que estava rodando, e até eu diagnosticar qual deles estava causando o problema, usei cron para matar e reiniciar o apache e o mysql a cada hora.

    
por 08.12.2010 / 19:01
0

Esse tipo de problema (processos que não saem normalmente) geralmente é causado quando o processo fica parado, aguardando a entrada / saída (por exemplo, de uma conexão de rede, canal local, sistema de arquivos, etc.). Às vezes, você pode usar strace para descobrir o que está acontecendo, embora usar strace efetivamente seja provavelmente uma pergunta totalmente diferente .

A saída da seguinte linha de comando ps pode ser interessante:

ps -e -o pid,wchan:20,cmd | grep httpd

Isto irá dizer-lhe o "nome da função kernel em que o processo está a dormir", o que pode ajudar a direcionar a sua investigação.

    
por 08.12.2010 / 19:09
0

Eu procuraria em todos os seus arquivos de configuração do Apache pela diretiva Listen para verificar se você tem apenas uma escuta na porta 80. No CentOS 6 existe uma diretiva no ssl.conf e se você copiar uma diretiva de outro http. conf na caixa do CentOS 6, você também encontrará o 443 se não for cuidadoso.

    
por 09.01.2012 / 20:09