memory - imagen - iniciar docker
Fuga de memoria del demonio Docker debido a los registros de un proceso de larga ejecuciĆ³n (3)
Tengo la siguiente configuración:
- El servicio Perl se ejecuta en un contenedor y la escritura cierra la sesión en STDERR
- logspout para enviar esos registros a un servidor remoto para archivar
en una máquina RAM de 600 MB.
También truncamos los registros periódicamente en:
/var/lib/docker/containers/CID/CID-json.log
como se sugiere here para evitar escenarios de disco al 100%.
Problema
El demonio Docker comienza con poco uso de memoria, inicialmente un 1% y aumenta lentamente al 40% después de 2 días de ejecutar el contenedor.
Referencia
Se ha hablado de la pérdida de memoria del demonio Docker en este problema y en este problema . Pero ambos están cerrados ahora diciendo que se fusionaron en un compromiso. Estoy ejecutando la versión principal más reciente de la ventana acoplable (versión Docker 1.4.0, compilación 4595d4f), pero todavía tengo un problema monótonamente creciente de uso de memoria.
EDITAR: Hice este experimento: simplemente ejecute un proceso de bash en el contenedor, imprima muchas líneas a STDERR, el uso de memoria del proceso de demonio docker se acelera muy rápidamente
¿La ventana acoplable realiza algunos búferes de registro y no libera memoria incluso si se borra el archivo de registro subyacente (/var/lib/docker/containers/CID/CID-json.log)?
Aparentemente no hay manera de borrar los registros. ¿ Este compromiso resolverá este problema para tareas de larga ejecución?
No sé por qué el uso de la memoria del demonio docker sigue aumentando. ¿Cómo depuro este problema?
Puede que esto no sea lo que está buscando, pero generalmente ejecuto un trabajo cron para reiniciar mis contenedores después de un cierto tiempo todos los días. Esto garantiza que el contenedor tenga suficiente RAM todo el tiempo y, por lo general, también restringo el uso máximo de memoria RAM por parte del contenedor al crearlos.
Los contenedores tardan solo unos segundos en reiniciar y servir los datos, y si no está ejecutando un servicio de Alta disponibilidad y puede permitirse unos segundos de inactividad, considere reiniciar el contenedor (suponiendo que no tenga volúmenes persistentes).
Sin embargo, si encuentra una solución a su problema, háganoslo saber.
Todavía hay al menos un problema pendiente relacionado con las fugas de memoria con los registros: https://github.com/docker/docker/issues/9139
docker rm $ (docker ps -a -q)
docker rmi --force $ (imágenes de docker -q)
podadora del sistema docker --fuerza
Necesito ser usuario root.
systemctl stop docker
rm -rf / var / lib / docker / aufs
apt-get autoclean
apt-get autoremove
systemctl start docker