Un saludo a la lista:

A ver si me podéis guiar y aconsejar para la nueva que se me avecina.

Administro un servidor en la distancia (muy en la distancia), en el que
tenía wheezy, y en el que hace cosa de dos semanas instalé jessie y
reorganicé un poco los servicios. No fue una simple actualización, sino
una instalación desde cero.

El caso es que por la tarde dejó de servir convenientemente (la mayor
parte de los servicios no van). He probado a conectarme por SSH y me
encuentro con esto:

#v+
$ ssh yo@mlejanoservidor
[...]
Last login: Thu Sep 24 23:56:00 2015 from X.Y.Z.T
-bash: fork: No se pudo asignar memoria                                         
                                                                        
-bash: xmalloc: no se pueden asignar 4112 bytes (2719744 bytes asignados)       
                                                                        
Connection to milejanoservidor closed.
#v-

Parece claro que el servidor se ha quedado sin memoria, ¿no? Así que
supongo que me toca averiguar qué programa es el culpable de esto.

El servidor tiene 8GB; pero cuando tenía 4GB y corría wheezy (hace cosa
de un año), empezó a darme problemas de memoria. Al final descubrí que
era debido a que las aplicaciones requerían más memoria de esos 4GB en
conjunto, y linux les dejaba reservar más memoria de la que existía
(supongo que con la esperanza de que el conjunto nunca alcance el límite
del total de memoria). Cuando realmente necesitaban más memoria que la
memoria física, empezaban a cascar las aplicaciones. La solución
obviamente era ampliar la memoria y así lo hice, pero también añadí,
entre tanto, a sysctl,conf:

vm.overcommit_memory = 2

para que el núcleo no obrara así. Ahora en el nuevo sistema, también
tengo ese valor en el fichero.

El caso es que durante algo menos de un año wheezy no dio ningún
problema de memoria (y solía haber bastante memoria libre). El nuevo
servidor tiene una configuración similar (no la misma), tiene la misma
carga y corre prácticamente los mismos servicios, por lo que en
condiciones normales no tendría que requerir mucha más memoria.

La pregunta es, ¿qué me aconsejáis? No tengo acceso físico al servidor,
así que el lunes no seré yo quien se acerque. Supongo que sería
interesante poder hacer un "top" o un "ps" para obtener la memoria que
ocupa cada proceso, pero no sé si ni siquiera se puede abrir una sesión
de bash, quizás sea imposible. ¿Pido que me saquen una foto de la
terminal? Quizás haya información interesante en ella.

Por otro lado, el curso pasado me hice un script para hacer
un seguimiento de la memoria, de manera que cada X tiempo obtenía la
memoria libre y los cinco o diez procesos que más memoria consumían. Si
me es imposible ahora mismo sacar quién ha sido el culpable, puede ser
un buen aliado para tener un historial de la memoria hasta la próxima
vez que casque.

¿Se os ocurre algo?

Por cierto con eso de 2719744 bytes asignados, ¿a qué se refiere?
¿Asignados a quién? Porque no puede ser la memoria total, que es 8 GB.

Gracias de antemano.

-- 
   La virtud, como el arte, hallarse suele
cerca de lo difícil [...]
                  --- Lope de Vega ---

Responder a