Linux 显示内存不足释疑
昨天一客户的 Linux 服务器上线,服务器表示良好,性能稳定,客户非常满意。 今天早上客户忽然电话到我手机,说发现服务器内存情况存在异常,担心服务器无法长期稳定运行,经过一番沟通,才发现虚惊一场。为免大家存在同样担心,现将情况汇报如下:
客户问题: 在 Linux 下用 Top 命令显示系统的物理内存消耗速度惊人,才16小时左右 8 G 的物理内存仅剩不到 2G 空闲空间, 如按这种速度下去再过8小时物理内存将完全耗尽,从而对系统稳定性提出严重质疑。
回复: Top 命令显示的物理内存使用情况并不能代表系统中内存真正的使用状态, 我们知道 Linux 下的内存主要用于三个部份。 1、 系统内核使用, 2、系统内核调用的各应用程序(如 IceWarp 的各项服务)使用, 3、 Buffers 和 Cache 。 第1,2部份我们就不讲了, 第3部份的 buffers /Cache 就是系统的缓冲区和缓存,主要用于存储程序执行时所需的数据, 以及缓存需要写入和读出的磁盘文件,以减少对磁盘 IO 的访问及所带来的压力。
正常情况下, Linux 会将尽可能多的可用物理内存分配给 buffers/cache , 以充份利用物理内存(这点和 Windows 不同, windows 即使还有空闲物理内存,也会按比例使用虚拟内存), 所以我们看到 top 中 空闲内存在不断减少,而 buffers 数目增加。
需要说明的是:已运行的程序(如 IceWarp 的各项服务)后续使用的内存绝大多数来自于 buffers/cache 中空闲的 buffers/cache(总buffers/cache= 已用 buffers/cache + 空闲 buffers/cache ), 所以我们可以理解为程序可使用的内存= 空闲物理内存+ 空闲 buffers 。因此并不是空闲物理内存减少就表示内存不足。在此推荐使用 command free -m 查看系统真正可用的内存。 如下所示:
[root@ice_**** ~]# free -m
total used free shared buffers cached
Mem: 8096 7003 1093 0 236 6421
-/+ buffers/cache: 346 7750
Swap: 1983 0 1983
所以上例中可用的内存还有 1093 + 7750 M 。
综上所述, 用户服务器的内存现在还是充足的! 可能有些用户会问, 如何确定系统内存不足呢? 我一般都用一个最简单的方法,就是看系统的 swap 空间否经常被使用,并且使用量会持续的增加。
随笔,难免有所疏漏及错误,欢迎指正。
更多推荐
所有评论(0)