游乐游手机版
首页/系统平台/文章详情

容器系统缓存对内存占用的影响解析

时间:2026-06-16 07:59
缘起 容器监控显示内存已被撑爆,但进入容器查看进程列表,却找不到任何进程在大量消耗内存。使用 awk 将所有容器进程的 RSS 相加,结果远低于内存上限。这究竟是什么原因导致的? 分析 第一反应:难道是 docker stats 的计算出了问题? 进入 sys fs cgroup memory d

缘起

容器监控显示内存已被撑爆,但进入容器查看进程列表,却找不到任何进程在大量消耗内存。使用 awk 将所有容器进程的 RSS 相加,结果远低于内存上限。这究竟是什么原因导致的?

分析

第一反应:难道是 docker stats 的计算出了问题?

进入 /sys/fs/cgroup/memory/docker/xxxxx/ 查看 memory.usage,数值与监控一致——计算并没有错误。那么就必须考虑另一个方向:系统内存中有一部分会被 buffer 和 cache 占用,Linux 内核会将这部分计入“已使用”内存。对于容器而言,是否也会出现类似的“误算”?而且很有可能某个容器触发的文件缓存(cache)被归到了它自己的头上。

验证方法非常简单:在容器内执行 dd 生成一个大文件。果然,dd 之后 docker stats 显示的已用内存立刻飙升。接着在宿主机上执行 echo 3 > /proc/sys/vm/drop_caches,容器监控的已用内存又降了回去。原因逐渐清晰。

问题

对于宿主机,计算内存占用时可以用“已用内存”减去 cache/buffer 来得到真实使用量。那么对于容器呢?如果不减去它自身引发的 cache/buffer,就会导致误报警。实际测试发现:dd 产生的文件缓存所占用的内存,会被计入 inactive_file 这个指标。这意味着,如果监控报警规则只盯着总内存,很可能就会被 cache 部分所欺骗。

来源:https://www.jb51.net/os/other/546712.html
上一篇Kali Linux编译Windows漏洞的详细步骤与技巧 下一篇Win7/Win10如何快速关闭开机自启软件
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
麒麟系统字体太小看不清如何调整界面字体大小
系统平台 · 2026-07-01

麒麟系统字体太小看不清如何调整界面字体大小

麒麟系统高分屏字体过小需分层干预:控制中心调整缩放至150%或200%,辅助功能增大文本,命令行设置MateDPI值(2K设200 0,4K设220 0),QT类软件用环境变量QT_DEVICE_PIXEL_RATIO=2,终端取消使用系统等宽字体并改字号,输入法候选字体调至16或18。

Win11记事本默认不换行如何设置为自动换行
系统平台 · 2026-07-01

Win11记事本默认不换行如何设置为自动换行

Windows11记事本默认不自动换行,手动开启仅对当前窗口有效。若要永久启用,可修改注册表,在HKCU Software Microsoft Notepad路径下新建DWORD值fWrap并设为1,或导入含此设置的 reg文件,此后所有新建记事本文件均自动换行显示,无需重复手动操作,一劳永逸。

银河麒麟系统时间快几分钟的调整方法
系统平台 · 2026-07-01

银河麒麟系统时间快几分钟的调整方法

银河麒麟系统时钟快几分钟的解决方法:先用date命令校正系统时间,再执行hwclock--systohc写入硬件时钟;启用systemd-timesyncd并配置阿里云NTP服务器;禁用chronyd避免服务冲突;双系统用户需设置硬件时钟为UTC模式。

Win11多屏下设置软件只在特定屏幕打开的方法
系统平台 · 2026-07-01

Win11多屏下设置软件只在特定屏幕打开的方法

双屏办公时,通过快捷方式添加启动参数、利用Windows窗口位置记忆功能或PowerShell脚本,可让软件自动在副屏打开,免去手动拖拽,提升工作效率。

MacBook如何取消菜单栏蓝牙搜索状态
系统平台 · 2026-07-01

MacBook如何取消菜单栏蓝牙搜索状态

在macOS中,进入系统设置“控制中心”,将蓝牙设为“不显示在菜单栏”即可隐藏图标且功能正常;旧版系统则在蓝牙偏好设置中取消勾选“在菜单栏中显示”。