Cuando Linux no tiene mas memoria disponible, envía una señal 15(SIGTERM) para detener el o los procesos que cree son los responsable de esta situación y deja en /var/log/messages lineas del tipo:

Dec 11 10:21:43 www kernel: __alloc_pages: 0-order allocation failed (gfp=0x1d2/0)
Dec 11 10:21:44 www kernel: __alloc_pages: 0-order allocation failed (gfp=0x1f0/0)

memmon.sh

Script para analizar el uso de memoria en el sistema

#!/bin/bash
echo "BEGIN:" $(date)
echo -e $(uptime) "\n"
free -m
echo
vmstat 1 5
echo
dmesg | diff -u dmesg_default - | grep '^+' | awk '{print "DMESG:" $0}'
dmesg > dmesg_default
echo
ps auxf --width=200
echo -e "END\n"

Instalación

chmod +x /root/memmon.sh

# create a cronjob that runs every few minutes to log the memory usage
echo '0-59/10 * * * * root /root/memmon.sh >> /root/memmon.txt' > /etc/cron.d/memmon
/etc/init.d/cron* restart 

# create a logrotate entry so the log file does not get too large
echo '/root/memmon.txt {}' > /etc/logrotate.d/memmon

Interpretación del log

Cada entrada en el log trae las siguientes, lineas:

Interpretar correctamente la salida de los comandos free y vmstat no es algo sencillo, así que antes de hacerlo es mejor leer: http://rimuhosting.com/howto/memory.jsp

OutOfMemory (last edited 2008-11-13 13:09:37 by kmilo)