Muitas tentativas e erros mais tarde, cheguei a uma solução alternativa, pois ainda não consegui encontrar a causa raiz disso. (Quero dizer, parece ser um IP aleatório direcionando meu servidor a cada 1-2 dias). Eu usei a página de status do servidor htpd e, em seguida, o utilitário atop para ver quais recursos foram hogged durante o congelamento e chegou a ver que era o disco.
Tantas tentativas depois, eu criei o seguinte script. Primeiro, há um número máximo de processos filho httpd permitidos, já que no meu caso, operações normais não geram mais de 20 processos filhos. Esse cheque por si só não é suficiente, já que aconteceu algumas vezes que demorou cerca de 24 horas para que a contagem de processos ocorresse após o servidor ter congelado. Então, vem a verificação do iostat, que é feita 2 vezes em intervalos de 5 + 5 segundos para evitar picos de uso do HDD local.
cnt='ps -Af | grep httpd | grep -v rotatelogs | grep -v grep | wc -l'
now='date +%Y-%m-%d_%H-%M'
if [ $cnt -ge 40 ]
then
/usr/bin/wget -q -O /root/apache_status_$now http://<your server here>/server-status
/sbin/service httpd restart
fi
# your hdd here
dsk='/usr/bin/iostat -dx /dev/hda 5 2 | grep hda | tail -1 | awk '{print $12}''
if (( $(echo "$dsk > 98" |bc -l) ))
then
/bin/sleep 5
dsk='/usr/bin/iostat -dx /dev/hda 5 2 | grep hda | tail -1 | awk '{print $12}''
if (( $(echo "$dsk > 98" |bc -l) ))
then
/sbin/service httpd restart
fi
fi
o acima é executado em um cron job assim
0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58 * * * * /root/monitor-apache.sh
Espero que isso ajude alguém a gerenciar situações semelhantes.