
Tengo una aplicación Java que se ejecuta en un servidor Linux con memoria física (RAM) asignada como 12 GB, donde vería la utilización normal durante un período de tiempo como se muestra a continuación.
sys> free -h
total used free shared buff/cache available
Mem: 11G 7.8G 1.6G 9.0M 2.2G 3.5G
Swap: 0B 0B 0B
Recientemente, al aumentar la carga de la aplicación, pude ver que la utilización de la RAM está casi llena y el espacio disponible es muy menor, por lo que podría enfrentar cierta lentitud, pero aún así la aplicación continúa funcionando bien.
sys> free -h
total used free shared buff/cache available
Mem: 11G 11G 134M 17M 411M 240M
Swap: 0B 0B 0B
sys> free -h
total used free shared buff/cache available
Mem: 11G 11G 145M 25M 373M 204M
Swap: 0B 0B 0B
me referí ahttps://www.linuxatemyram.com/donde sugirió el siguiente punto.
Señales de advertenciade una situación genuina de poca memoria que quizás desees analizar:
- la memoria disponible (o "libre + buffers/caché") es cercana a cero
- El swap utilizado aumenta o fluctúa.
- dmesg | grep oom-killer muestra el asesino OutOfMemory en funcionamiento
Según los puntos anteriores, no veo ningún problema de OOM a nivel de aplicación y el intercambio también se deshabilitó. descuidando así los dos puntos. Un punto que me preocupa es que la memoria disponible es inferior a cero y necesito una aclaración.
Preguntas:
- En caso de que disponible esté cerca de 0, ¿terminará en un fallo del sistema?
- ¿Significa que necesito actualizar la RAM cuando la memoria disponible es menor?
- ¿Sobre qué base se debe asignar/aumentar la memoria RAM?
- ¿Tenemos alguna recomendación/pauta oficial que deba seguirse para la asignación de memoria RAM?
Respuesta1
Capaz de obtener una respuesta para una de mis preguntas.
En caso de que disponible esté cerca de 0, ¿terminará en un fallo del sistema?
Al realizar pruebas en uno de mis servidores, donde cargué la memoria casi llena como se muestra a continuación
sys> free -h
total used free shared buff/cache available
Mem: 11G 11G 135M 25M 187M 45M
Swap: 0B 0B 0B
Pude ver que mi aplicación sola (que consumía más memoria) fue eliminada por el asesino de falta de memoria al que se puede hacer referencia en los registros del kernel.
dmesg -e
[355623.918401] [21805] 553000 21805 69 21 2 0 0 rm
[355623.921381] Out of memory: Kill process 11465 (java) score 205 or sacrifice child
[355623.925379] Killed process 11465 (java), UID 553000, total-vm:6372028kB, anon-rss:2485580kB, file-rss:0kB, shmem-rss:0kB
https://www.kernel.org/doc/gorman/html/understand/understand016.html
Out Of Memory Killer o OOM Killer es un proceso que emplea el kernel de Linux cuando el sistema tiene poca memoria. Esta situación ocurre porque el kernel de Linux ha asignado demasiada memoria a sus procesos. ... Esto significa que los procesos en ejecución requieren más memoria de la que está físicamente disponible.