Como reiniciar automaticamente o apache se ele parar de responder e o soquete ainda estiver em uso

1

Servidor Apache O Debian Linux x64 serve as aplicações mono do site em mysite.com e outros sites usando hospedagem virtual.

Às vezes, o apache pára de responder por um motivo desconhecido. Apache error_log contém:

[Sat Jun 20 13:56:31 2015] [error] [client 90.190.33.164] File does not exist: /var/www/apple-touch-
icon.png
[Sat Jun 20 16:38:04 2015] [error] server reached MaxClients setting, consider raising the MaxClients setting
[Sat Jun 20 17:20:11 2015] [notice] caught SIGTERM, shutting down
mod-mono-server received a shutdown message
[Tue Jun 23 09:20:50 2015] [error] mod_mono: connect error (Interrupted system call). File: /tmp/mod
_mono_server_default
mod-mono-server received a shutdown message
mod-mono-server received a shutdown message
mod-mono-server received a shutdown message
[Tue Jun 23 09:20:54 2015] [error] Not running mod-mono-server.exe because no MonoApplications, Mono
ApplicationsConfigFile or MonoApplicationConfigDir specified.
[Tue Jun 23 09:20:54 2015] [notice] Apache/2.2.16 (Debian) mod_mono/2.6.3 configured -- resuming normal operations
..

Parece que

[Sat Jun 20 16:38:04 2015] [error] server reached MaxClients setting, consider raising the MaxClients setting
A mensagem

no arquivo de log aparece primeiro.

Depois disso, provavelmente a tarefa cron tenta abaixo reiniciar o apache, o que causa uma mensagem no error_log:

[Sat Jun 20 17:20:11 2015] [notice] caught SIGTERM, shutting down
mod-mono-server received a shutdown message

O servidor estava inativo a partir deste momento: access_log não registra nenhum acesso a partir de 20 de junho de 17:20

O servidor começa a pesquisar novamente somente em [Tue Jun 23 09:20:50 2015] quando eu reiniciei manualmente. Isso começa a ocorrer a partir do mês passado várias vezes por mês.

Para corrigir isso, o seguinte script crontab é usado em execução a cada 10 minutos:

wget --timeout=10 --no-verbose --tries=1 -a /var/log/wget.log -O /var/log/wgettulem.html  mysite.com || /etc/init.d/apache2 restart

Se o apache parar de responder, o arquivo de log gravado por esse script conterá

Connection timed out mensagens de erro.

No entanto, o apache não é reiniciado. Tentando reiniciá-lo manualmente usando

/etc/init.d/apache2 restart

retorna o Sockect está em erro de uso. ps aux mostra que o apace ainda está em execução.

Eu corrijo isso usando

ps aux | grpe apache  

para encontrar o número do processo do appache e usar

kill

para matar este processo.

Como consertar ou encontrar o reson dessa mensagem? Como automatizar esse processo para que todas as instâncias do apache sejam eliminadas e o apache seja reiniciado automaticamente por esse script. Como existe uma maneira de manter o apache respondendo?

A versão Debian é 6.0.4

apache2 -V retorna

Server version: Apache/2.2.16 (Debian)
Server built:   Feb  5 2012 21:35:42
Server's Module Magic Number: 20051115:24
Server loaded:  APR 1.4.2, APR-Util 1.3.9
Compiled using: APR 1.4.2, APR-Util 1.3.9
Architecture:   64-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/prefork"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT="/etc/apache2"
 -D SUEXEC_BIN="/usr/lib/apache2/suexec"
 -D DEFAULT_PIDLOG="/var/run/apache2.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_LOCKFILE="/var/run/apache2/accept.lock"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="mime.types"
 -D SERVER_CONFIG_FILE="apache2.conf"

o apache2.conf contém

<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>
    
por Andrus 23.06.2015 / 10:08

1 resposta

0

Se você quiser apenas reiniciar o Apache se ele travar (por qualquer motivo), você deverá instalar o System Integrity Monitor por R-fx Networks.

Entre muitos recursos , ele pode ser configurado para monitorar seus serviços da Web, emitir automaticamente comandos de reinicialização e enviar notificações.

Instruções de instalação rápida:

cd /usr/local/src
wget http://www.rfxn.com/downloads/sim-current.tar.gz
tar -xvf sim-current.tar.gz
cd sim*
./setup -i

Continue com a instalação interativa definindo os caminhos de arquivo apropriados para seus executáveis de serviço da web. Como último passo, ative o cronjob:

/usr/local/sbin/sim -j
    
por 23.06.2015 / 10:47