【问题标题】:Docker daemon memory leak due to logs from long running process由于长时间运行进程的日志导致 Docker 守护进程内存泄漏
【发布时间】:2015-02-22 01:30:15
【问题描述】:

我有以下设置:

  1. Perl 服务在容器中运行并将日志写入STDERR
  2. logspout 将这些日志发送到远程服务器进行归档

在 600 MB RAM 的机器上。

我还定期截断日志:

/var/lib/docker/containers/CID/CID-json.log

按照here 的建议避免 100% 磁盘情况。

问题

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

参考

Docker 守护进程内存泄漏已在 this issue 和 this issue 中讨论过。但是他们现在都关闭了,说在提交时合并。我正在运行 最新的主要版本 docker(Docker 版本 1.4.0,构建 4595d4f),但仍然面临内存使用量单调增加的问题。

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

docker 是否会做一些log buffering 并且即使底层日志文件 (/var/lib/docker/containers/CID/CID-json.log) 被清除也不释放内存?

显然有no way 来清除日志。 this commit 会为长时间运行的任务解决这个问题吗?

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

【问题讨论】:

  • 至少尝试将应用程序的输出发送到 /dev/null 或日志文件,而不是发送到 STDOUT/STDERR。看看这是否能解决你的问题。然后,您可以查明日志记录是否会导致内存消耗。
  • 您如何测量内存使用情况?在我的系统上,我立即获得 330MB 的 VmSize,但 RSS 为 14MB。 RSS 不太适合这种讨论,因为它会根据机器正在做什么而上下波动。
  • 我使用 linux top 命令测量了内存使用情况。 docker 守护进程从低内存使用开始,它会慢慢加速,这可以在运行 bash docker 容器并将大量文本回显到 stdout 的几分钟内看到。内存加速最终导致OOM崩溃
  • 我用yes试过了;我可以让 Docker 使用大量 CPU,但不会增加内存。也许我使用了不同的选项——你在docker run 上使用了-dti 中的哪一个?也许发布一个完整的最小复制?

标签: memory docker lxc dockerfile


【解决方案1】:

至少还有一个与日志内存泄漏有关的悬而未决的问题:https://github.com/docker/docker/issues/9139

【讨论】:

    【解决方案2】:

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

    容器只需几秒钟即可重新启动并提供数据,如果您没有运行高可用性服务并且可以承受几秒钟的停机时间,请考虑重新启动容器(假设您没有持久卷)。

    但是,如果您确实找到了问题的解决方案,请告诉我们。

    【讨论】:

      【解决方案3】:
      • docker rm $(docker ps -a -q)
      • docker rmi --force $(docker images -q)
      • docker system prune --force

      需要root用户。

      • systemctl stop docker
      • rm -rf /var/lib/docker/aufs
      • apt-get autoclean
      • apt-get autoremove
      • systemctl start docker

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-14
        • 1970-01-01
        • 2011-05-06
        • 1970-01-01
        • 2012-08-18
        • 2015-09-07
        • 1970-01-01
        • 2020-08-14
        相关资源
        最近更新 更多