当前位置:首页 > 生活 > 正文

内存使用率多少正常?高了低了都不行,教你正确判断

内存使用率多少正常?高了低了都不行,教你正确判断

最近在看服务器的监控数据,老遇到客户问我,这个内存使用率到底多少算正常?我发现很多人在这上面栽跟头,老觉得内存用高了就是不然后各种折腾,反而把事情搞砸了。 内存这玩意...

最近在看服务器的监控数据,老遇到客户问我,这个内存使用率到底多少算正常?我发现很多人在这上面栽跟头,老觉得内存用高了就是不然后各种折腾,反而把事情搞砸了。

内存这玩意儿,用得少也不行,用得太多了更不行。得找到一个平衡点,才算对路。今天我就把我平时怎么看这个事儿,给大家唠唠。

先说说为啥用得太少不行。

你有没有发现,有时候服务器挺突然就卡得不行,查来查去发现内存才用了30%?这你就得注意了。内存它不是你闲钱放银行里,不动白不动。它得干活,得存东西,得临时处理数据。特别是那些需要频繁读写、加载大量配置文件的应用,比如数据库、缓存服务这些,它们就需要把热点数据尽量放在内存里,这样访问速度才能快。

内存使用率多少正常?高了低了都不行,教你正确判断

如果内存利用率老是趴在低位,说明说明你的应用没把内存用起来,或者说,它根本就没需要往内存里放多少东西。最直接的后果就是,每次要数据的时候,它都得去硬盘上磨蹭。硬盘能跟内存比速度吗?那是天壤之别。访问速度就慢了,用户体验就差了,这叫“慢”的锅,有的时候内存用少了也得背。

我还遇到过一个情况,有客户说自己的数据库性能不行,我一看,内存利用率才20%。我让他把数据库的缓存参数调高点,结果性能直接翻倍。这就说明,内存这东西,得给它活儿干,它才能发挥出价值。

那用得太多了?当然也不行。

这个大家都好理解。如果内存一上来就跑到90%以上,甚至接近100%,那基本就是危险信号了。操作系统它自己也需要内存空间来运行,它要调度进程、管理文件系统缓存、处理网络IO等等。如果你占用了绝大部分内存,系统留给自己的空间就很少了。这时候,一旦再来点新的请求,或者启动个新程序,它发现没地方放了,怎么办?只能把内存里一些不常用的数据写到硬盘的交换区(swap)里去。这个过程就叫“内存置换”。

内存置换是个很耗性能的操作。硬盘的速度比内存慢得多,一来一回,服务器就开始卡顿,甚至响应不过来,就是所谓的“晃动”(thrashing)。用户一访问,等半天没反应,这体验一下就崩了。

而且内存占满了,也容易导致系统不稳定。有时候,一个进程突然要申请一大块内存,结果发现没有了,直接就给你报个错,或者这个进程直接崩掉。如果这个进程刚好是你的核心业务进程,那整个服务基本就瘫痪了。

那啥才叫“正常”?

这个没有一个绝对的数字。关键看你的应用类型和业务需求。不过我一般遵循这么个大致的原则:

  • 普通Web应用、API服务: 内存使用率保持在 70%-85% 之间,我觉得是比较健康的。这个区间说明应用把内存利用起来了,能缓存热点数据,提高访问速度,但同时又留有足够的空间给操作系统和突发请求。
  • 数据库、缓存等重度依赖内存的服务: 内存使用率可以适当高一点,比如 80%-90%。这类服务就是要吃内存来提速的。只要内存置换(swap)不频繁,系统依然稳定,那就可以接受。
  • 关键看Swap区: 无论内存使用率是多少,只要Swap区一直占用很高,或者频繁读写Swap,那基本就是内存不够用了,得想办法。
  • 观察波动: 内存使用率的波动也很重要。一个平稳的、略有波动的曲线,比那种一会儿高一会儿低,猛蹿猛降的要

怎么判断?

我一般会结合几个指标来看:

1. 内存使用率本身: 这个不用说,最直观的。

2. Swap使用率: 这个很重要,一旦Swap开始动起来,就要警惕了。

3. IOPS(每秒输入输出操作数)和磁盘读写速度: 如果内存使用率高,同时伴随着IOPS暴涨,磁盘读写居高不下,那基本可以断定是内存不够,导致了频繁的磁盘交换。

4. 应用响应时间: 业务上直接体现出来的就是访问速度。如果内存利用率高,响应时间也在变长,那说明内存可能成了瓶颈。

5. 操作系统的负载(Load Average): 这个也能侧面反映系统忙碌程度,特别是当CPU负载不高但内存占用很高时,Load Average却很高,那往往也是内存压力大的表现。

再说说我最近踩的一个坑。

有个客户,服务器内存是16G,他一看监控,内存使用率常年85%以上,就觉得不对劲,把数据库的缓存调小了很多,结果性能直线下降。后来一查,他这个业务场景,需要缓存大量用户日志信息,16G内存刚好够用,而且他的Swap区基本没怎么动过,IO也正常。我跟他解释了半天,他才明白,他之前以为的“高”,人家系统运行得很“舒服”。

判断内存是否正常,不能只看一个数字,得结合业务场景、Swap区、磁盘IO、响应时间等等一起看。高了低了都不算绝对的好坏,得看是不是“合适”,是不是影响了业务的正常运行。

最新文章