Estoy tratando de diagnosticar algunos fallos aleatorios en un servidor sin cabeza y una cosa que parece curiosa es que solo parecen ocurrir bajo presión de memoria y mi tamaño de intercambio no superará 0.
¿Cómo puedo forzar a mi máquina a cambiar para asegurarse de que funciona correctamente?
orca ~ # free
total used free shared buffers cached
Mem: 1551140 1472392 78748 0 333920 1046368
-/+ buffers/cache: 92104 1459036
Swap: 1060280 0 1060280
orca ~ # swapon -s
Filename Type Size Used Priority
/dev/sdb2 partition 1060280 0 -1
kern.log
el momento de las segfaults? Un mensaje sobreoom-killer
indicaría que su sistema no tiene suficiente memoria virtual, lo que podría significar que no se está utilizando el intercambio. ¿Es este un servidor virtualizado (y de qué tipo)?segfault at 54 ip b7619ba8 sp bf9c3380 error 4
si estuviera pensando que es un problema de hardware que será difícil de localizar. Este es un servidor físico con procesadores duales Athlon MP 2000+ y 1.5GB de RAM. Se ejecuta de manera bastante estable pero se daña durante las compilaciones.Respuestas:
¿Es esto Linux? Si es así, puede intentar lo siguiente:
Y luego use uno o varios programas que usen mucha RAM o escriba una pequeña aplicación que solo consume RAM. Lo siguiente hará eso (fuente: http://www.linuxatemyram.com/play.html ):
Agregué el modo de suspensión (1) para darle más tiempo para ver los procesos a medida que engulle ram e intercambia. El asesino OOM debería matar esto una vez que se haya quedado sin RAM y SWAP para dar al programa. Puedes compilarlo con
donde filename.c es el archivo en el que guarda el programa anterior. Luego puede ejecutarlo con ./memeater.
No haría esto en una máquina de producción.
fuente
/proc/self/oom_score_adj
asegurarse de que sea la víctima más probable del asesino OOM ...<unistd.h>
para dormir, de lo contrario arroja una advertenciawarning: implicit declaration of function ‘sleep’;