Estoy ejecutando un servidor Ubuntu 18.04 con contenedores Docker (v20.10.12) ejecutándose en él. Tengo alrededor de 5 contenedores ejecutándose a la vez y consumen alrededor de 1,5 GB de memoria de forma habitual, mientras que mi servidor tiene 8 GB de memoria disponible. Uno de estos 5 contenedores pierde memoria cada 18-24 h, consume toda la memoria restante y requiere alrededor de 4-5 GB de intercambio, lo que hace que el uso de mi CPU y disco aumente al 100%, lo que a su vez hace que se genere el asesino OOM y Comienza a seleccionar procesos y uno de ellos es Dockerd.
Después de que se elimina Dockerd, no puedo encontrar los registros de dicho contenedor que tiene la pérdida de memoria, ya que los únicos que tengo en el sistema de archivos son los contenedores que se generaron después de reiniciar Dockerd. Entonces, estoy completamente a oscuras en términos de lo que realmente sucedió en ese contenedor sin los registros, y esto es exactamente lo que estoy tratando de encontrar.
Descubrí con qué contenedor se filtró grep VmPeak /proc/{PID}/status
y obtuve los PID docker inspect -f '{{.State.Pid}}' {CONTAINER_ID}
, que enumeraban el uso máximo de memoria de ~11 GB en un caso. Pero, cuando fui /var/lib/docker/containers/
y revisé todas las carpetas, ninguna tenía registros antes del tiempo real de reinicio de OOM Killer y Dockerd. También intenté mirar var/log/syslog
y solo me mostró al asesino de OOM haciendo lo suyo y entrando en pánico con varios errores de red y firewall. Si me equivoco y debo profundizar en el syslog, hágamelo saber.
No necesariamente necesito obtener estos registros, un poco de ayuda para configurar alguna otra solución que conserve los registros en otro lugar para poder revisarlos la próxima vez que falle también sería muy útil y posiblemente podría resolver el problema. Pero esto no está relacionado con el tema que nos ocupa, por lo que entiendo si se ignorará.