【问题标题】:Docker consuming more HD memoryDocker消耗更多的HD内存
【发布时间】:2016-09-26 10:52:28
【问题描述】:

我有一个 play 应用程序并在 docker 1.10.3 中运行。我们正在以每秒 1000 个请求来执行负载测试。应用程序工作正常。我们看到 Docker 消耗了大量的 HD 内存。码头工人在 3 天内消耗了 2.2gb 到 39gb。这让我们很担心。

突出显示 Docker INFO 和消耗的空间

有没有配置docker不消耗高清内存? 任何帮助将不胜感激。

【问题讨论】:

  • 您知道哪些文件占用了所有这些空间吗?我的猜测是一个随着请求数量不断增长的日志文件。
  • 它是 docker 内部的。它与应用程序无关。我只是想知道 Docket 中是否有任何配置可以摆脱这种情况。

标签: docker playframework docker-compose boot2docker docker-machine


【解决方案1】:

Docker 捕获应用程序的标准输出 (STDOUT) 并将其(默认情况下)存储在内部日志文件中。您可以在/var/lib/docker/containers/$CONTAINER_ID/$CONTAINER_ID-json.log 找到此文件。默认情况下,此文件不会旋转,如果您的应用程序详细打印到 STDOUT,该文件可能会变大。

两种可能的解决方案:

  1. 为 Docker 日志文件配置日志轮换。我找到了一个good article here,它描述了如何通过创建具有以下内容的文件/etc/logrotate.d/docker-container 来为Docker 启用日志轮换:

    /var/lib/docker/containers/*/*.log {
      rotate 7
      daily
      compress
      size=1M
      missingok
      delaycompress
      copytruncate
    }
    

    您可以使用这些选项。它们都记录在logrotate's man page

  2. 通过在创建容器时指定 --log-driver 选项为您的容器使用备用日志记录:

    $ docker run --log-driver=syslog your_image
    

    可用的驱动程序记录在the official documentation 中。例如,您可以使用 --log-driver=syslog 来使用系统的 syslog 守护程序、针对各种云服务或使用 --log-driver=none 完全禁用日志记录。

【讨论】:

  • 感谢您尝试这些选项
猜你喜欢
  • 2020-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-02
  • 1970-01-01
  • 2020-03-19
  • 2010-10-08
  • 1970-01-01
相关资源
最近更新 更多