且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

使用PHP创建和删除文件后,Docker无法释放内存

更新时间:2023-02-02 21:10:12

是的,已经报道了类似的问题此处.

Yes, a similar issue has been reported here.

这就是其中之一的coolljt0725的答案,回答为什么 top 输出中的 RES 列显示的内容不同于 docker stats 的原因(我只想引用他的意思):>

Here's the answer of coolljt0725, one of the contributors, answering why a RES column in top output shows something different, than docker stats (I'm just gonna quote him as is):

如果我正确理解,则是从容器的内存cgroup中完全读取docker stats中的内存使用情况,您可以看到该值与从cat/sys/fs/cgroup/memory/docker/665e99f8b760c0300f10d3d9b35b1a5e5fdcf1b7e4a0100969memory.usage_in_bytes,该限制也是创建容器时由-m设置的内存cgroup限制.RES和内存cgroup的统计信息不同,RES没有考虑缓存,但内存cgroup却考虑到了这,这就是为什么docker stats中的MEM USAGE远比top中的RES更重要

If I understand correctly, the memory usage in docker stats is exactly read from containers's memory cgroup, you can see the value is the same with 490270720 which you read from cat /sys/fs/cgroup/memory/docker/665e99f8b760c0300f10d3d9b35b1a5e5fdcf1b7e4a0e27c1b6ff100981d9a69/memory.usage_in_bytes, and the limit is also the memory cgroup limit which is set by -m when you create container. The statistics of RES and memory cgroup are different, the RES does not take caches into account, but the memory cgroup does, that's why MEM USAGE in docker stats is much more than RES in top

此处用户的建议实际上可以帮助您查看实际内存消耗:

What a user suggested here might actually help you to see the real memory consumption:

尝试设置 docker run --memory 的参数,然后检查/sys/fs/cgroup/memory/docker/<container_id>/memory.usage_in_bytes 应该是对的.

Try set the param of docker run --memory,then check your /sys/fs/cgroup/memory/docker/<container_id>/memory.usage_in_bytes It should be right.