Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Memory 由于长时间运行进程的日志,Docker守护程序内存泄漏_Memory_Docker_Lxc_Dockerfile - Fatal编程技术网

Memory 由于长时间运行进程的日志,Docker守护程序内存泄漏

Memory 由于长时间运行进程的日志,Docker守护程序内存泄漏,memory,docker,lxc,dockerfile,Memory,Docker,Lxc,Dockerfile,我有以下设置: 在容器中运行的Perl服务,并将日志写到STDERR 将这些日志发送到远程服务器进行存档 在一台600 MB内存的机器中 我还定期在以下位置截断日志: /var/lib/docker/containers/CID/CID-json.log 建议避免100%使用磁盘的情况 问题 Docker守护进程以低内存使用率开始,最初为1%,运行容器2天后缓慢增加到40% 参考 Docker守护进程内存泄漏已在和中讨论过。但现在这两个网站都关闭了,表示在提交时进行了合并。我正在运行docke

我有以下设置:

  • 在容器中运行的Perl服务,并将日志写到
    STDERR
  • 将这些日志发送到远程服务器进行存档
  • 在一台600 MB内存的机器中

    我还定期在以下位置截断日志:

    /var/lib/docker/containers/CID/CID-json.log
    
    建议避免100%使用磁盘的情况

    问题

    Docker守护进程以低内存使用率开始,最初为1%,运行容器2天后缓慢增加到40%

    参考

    Docker守护进程内存泄漏已在和中讨论过。但现在这两个网站都关闭了,表示在提交时进行了合并。我正在运行docker的最新主要版本(docker 1.4.0版,build 4595d4f),但仍然面临着单调增加的内存使用问题

    编辑:我做了这个实验:只需在容器中运行一个bash进程,向STDERR打印很多行,docker守护进程的内存使用就会非常快地加速

    docker是否执行了一些操作,即使清除了底层日志文件(
    /var/lib/docker/containers/CID/CID json.log
    ),也不会释放内存

    显然没有办法清理日志。对于长时间运行的任务,是否可以解决此问题


    我不知道为什么docker daemon的内存使用量不断增加。如何调试此问题?

    仍有至少一个与日志内存泄漏相关的未决问题:

    这可能不是您想要的,但我通常在每天一定时间后运行cron作业以重新启动容器。这确保了容器始终有足够的RAM,并且我通常在创建容器时限制容器的最大RAM使用量

    容器只需几秒钟重启并服务数据,如果您没有运行高可用性服务,并且可以提供几秒钟的停机时间,请考虑重新启动容器(假设您没有持久卷)。p> 但是,如果您确实找到了问题的解决方案,请务必让我们知道。

    • docker rm$(docker ps-a-q)
    • dockerrmi--force$(dockerimages-q)
    • docker系统删减——强制
    需要是root用户

    • systemctl stop docker
    • rm-rf/var/lib/docker/aufs
    • apt获得自动清洁
    • apt-get-autoremove
    • systemctl启动docker

    至少尝试将应用程序的输出发送到/dev/null或日志文件,而不是发送到STDOUT/STDERR。看看这是否能解决你的问题。然后,您可以确定日志记录是否会导致内存消耗。您如何衡量内存使用情况?在我的系统上,我直接获得了330MB的虚拟机大小,但RSS是14MB。RSS对于此类讨论不是很好,因为它会根据机器的其他操作而上下波动。docker守护进程以低内存使用率启动,并缓慢加速,这可以在运行bash docker容器并将大量文本回显到stdout的几分钟内看到。内存的加速最终会导致一个错误。我尝试使用
    yes
    ;我可以让Docker使用大量CPU,但不会增加内存。也许我使用了不同的选项-您在docker run上使用了哪个
    -dti
    ?也许发布一个完整的最小复制?