![所有应用程序使用的内存均不超过 2%,但内存已达到 70%](https://linux22.com/image/773358/%E6%89%80%E6%9C%89%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E4%BD%BF%E7%94%A8%E7%9A%84%E5%86%85%E5%AD%98%E5%9D%87%E4%B8%8D%E8%B6%85%E8%BF%87%202%25%EF%BC%8C%E4%BD%86%E5%86%85%E5%AD%98%E5%B7%B2%E8%BE%BE%E5%88%B0%2070%25.png)
答案1
您需要进行一些思考和判断,以了解您的环境并进行容量规划。对于组织来说,这台主机表现良好意味着什么?提示:用户关心的是“它是否慢”,而不是内存或 CPU 利用率。您可以将利用率提高到什么程度,同时仍有足够的安全裕度?
您似乎正在使用一瞥,一个基于 Python psutil 的资源监视器。乍一看(哈哈),它具有不错的用户体验、合理的数据源,并会向您发出警报,真不错。默认内存警报是 50% 70% 90%,这对我来说是相当保守的,并且会从绰绰有余升级到令人担忧的严重内存压力。检查这是否适用于您的环境,如有必要,请配置不同的阈值。
但是内存指标的百分比是多少?在 Linux 上,Glances 遵从 psutil.psutil 计算总计减去可用。这是合理的做法,缓存和其他易于恢复的东西被排除在比率之外。尽管有针对旧内核的遗留回退计算,但衡量方法可能会有所不同。
在这些“高”内存消耗警报期间,收集原始 /proc/meminfo
输出并进行分析。内存消耗可能存在于进程的地址空间之外。包括共享内存段或内核数据结构。
此主机是一个 systemd 系统,运行 docker 和其他一些程序。通过运行获取每个组的内存使用情况 systemd-cgtop --order=memory
, docker stats
通常每个组的统计数据比计算系统上的许多进程更容易理解。也许容器仍然存在,即使它们的大多数进程已停止。