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.
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
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.
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.
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.
Tags apache-2.2 centos