我有以下设置:
- Perl 服务在容器中运行并将日志写入
STDERR
- logspout将这些日志发送到远程服务器进行归档
在 600 MB RAM 的机器上。
我还定期在以下位置截断日志:
/var/lib/docker/containers/CID/CID-json.log
正如这里所建议的那样,以避免 100% 的磁盘情况。
问题
Docker 守护进程从低内存使用开始,最初为 1%,在容器运行 2 天后慢慢增加到 40%。
参考
Docker daemon memory leak 已经在这个 issue和this issue中讨论过了。但是他们现在都关闭了,说在提交时合并。我正在运行最新的 docker 主要版本(Docker 版本 1.4.0,构建 4595d4f),但仍然面临内存使用量单调增加的问题。
编辑:我做了这个实验:只需在容器中运行一个 bash 进程,打印出很多行到 STDERR,docker daemon 进程的内存使用速度非常快
即使底层日志文件()被清除, docker是否会做一些日志缓冲并且不释放内存?/var/lib/docker/containers/CID/CID-json.log
显然没有办法清除日志。此提交是否会为长时间运行的任务解决此问题?
我不知道为什么 docker daemon 的内存使用量不断增加。我该如何调试这个问题?