所有应用程序使用的内存均不超过 2%,但内存已达到 70%

所有应用程序使用的内存均不超过 2%,但内存已达到 70%

我的服务器内存出现问题,因此停止了所有 docker 容器,但它仍然使用了 70% 以上的内存,还添加了交换,但根本没有使用。当我重新启动服务器时,一切都很好,但突然间它就这样上升了。我该怎么办?

屏幕截图

更新:我启动了容器,一开始内存使用率为 80%。但是两天后,内存使用率上升到了 92%。 htop 的屏幕截图

每组的内存使用情况 各组内存使用情况

答案1

您需要进行一些思考和判断,以了解您的环境并进行容量规划。对于组织来说,这台主机表现良好意味着什么?提示:用户关心的是“它是否慢”,而不是内存或 CPU 利用率。您可以将利用率提高到什么程度,同时仍有足够的安全裕度?

您似乎正在使用一瞥,一个基于 Python psutil 的资源监视器。乍一看(哈哈),它具有不错的用户体验、合理的数据源,并会向您发出警报,真不错。默认内存警报是 50% 70% 90%,这对我来说是相当保守的,并且会从绰绰有余升级到令人担忧的严重内存压力。检查这是否适用于您的环境,如有必要,请配置不同的阈值。

但是内存指标的百分比是多少?在 Linux 上,Glances 遵从 psutil.psutil 计算总计减去可用。这是合理的做法,缓存和其他易于恢复的东西被排除在比率之外。尽管有针对旧内核的遗留回退计算,但衡量方法可能会有所不同。

在这些“高”内存消耗警报期间,收集原始 /proc/meminfo输出并进行分析。内存消耗可能存在于进程的地址空间之外。包括共享内存段或内核数据结构。

此主机是一个 systemd 系统,运行 docker 和其他一些程序。通过运行获取每个组的内存使用情况 systemd-cgtop --order=memorydocker stats 通常每个组的统计数据比计算系统上的许多进程更容易理解。也许容器仍然存在,即使它们的大多数进程已停止。

相关内容