Linux

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > Linux > 服务器内存排查free、vmstat、sar命令

服务器内存排查之free、vmstat、sar命令实战教程

作者:程序员1970

这篇文章主要介绍了服务器内存排查之free、vmstat、sar命令的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用linux具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

前言

在Linux服务器的运维场景中,程序突然卡顿且无日志报错、CPU未跑满的情况时有发生,此时内存问题往往是潜在的“罪魁祸首”。对于开发运维人员而言,掌握free、vmstat、sar这三个命令,就如同为服务器配备了专业的“体检工具”,能够在短短几分钟内精准定位内存相关的故障根源,为高效解决问题提供有力支持。

一、内存排查的必要性

当内存容量充足时,程序能够顺畅运行;然而,一旦内存不足,便会引发一系列问题。一方面,程序可能因无法获取足够的内存空间而崩溃;另一方面,系统不得不借助磁盘的“备用仓库”(即swap分区)来存储和读取数据。但磁盘的读写速度相较于内存而言,慢了100倍以上,这种速度差异必然导致程序出现明显的卡顿现象,严重影响服务器的性能和用户体验。

二、free命令:内存排查的“入门利器”

free命令堪称内存排查领域的“入门款”工具,它能够快速提供关于内存使用情况的基本信息,让用户迅速了解服务器的内存状态。

(一)简单操作与灵活参数

在Linux终端中,只需输入“free”命令,即可查看内存的初始状态。若希望结果以更人性化的GB/MB为单位显示,避免记忆KB数值的繁琐,可添加“-h”参数;若想实现每隔一定时间(如3秒)自动刷新内存信息,可添加“-s 3”参数。具体命令如下:

free -h -s 3

(二)结果解读:洞察内存“收支”

free命令输出的结果包含多个核心字段,每个字段都如同仓库的“收支数据”,反映了内存的不同使用情况:

(三)实际场景应用:快速判断内存状况

通过free命令,运维人员可以在10秒内快速判断内存是否充足。例如,当使用“free -h”命令查看结果时,如果发现available值只有100MB(而总内存为1.9GB),这就表明内存已经非常紧张,可能需要清理缓存或考虑升级内存。另外,如果Swap的used值大于0,并且持续增加,这说明主仓库的内存已经不够用,系统开始频繁使用备用仓库,此时必须尽快排查原因,避免问题进一步恶化。

三、vmstat命令:内存+CPU+IO的“全面体检专家”

vmstat命令犹如服务器的“全面体检报告”,它不仅能够提供内存的使用情况,还能同时监测CPU和IO的状态,是Linux运维领域中备受推崇的“明星命令”。

(一)使用方法:定期统计,精准把握

在终端中输入“vmstat”命令,默认会统计一次当前的系统状态。若希望实现定期统计,例如每隔5秒统计一次,共统计3次,可使用以下命令:

vmstat 5 3

其中,第一个数字“5”表示统计间隔(秒),第二个数字“3”表示统计次数。通过定期统计,可以更准确地观察系统性能的变化趋势。

(二)结果解读:按模块剖析性能维度

vmstat的输出字段较多,但按照不同的性能维度进行模块划分后,理解起来就变得相对简单。

(三)实际场景应用:破解“内存+CPU+IO”连环瓶颈

例如,某服务器使用“vmstat 5 3”命令进行监测,发现swpd = 1GB(备用仓库正在使用)、si = 50KB/s(持续从备用仓库读入数据)、wa = 25%(IO等待时间较长)。这一系列数据表明,服务器内存不足,导致系统开始使用备用仓库。而备用仓库位于磁盘,磁盘IO速度较慢,进而使得CPU需要等待IO操作完成,形成了“内存不足→使用备用仓库→磁盘IO慢→CPU等待”的连环瓶颈。在这种情况下,首先需要增加服务器的内存容量,然后再检查磁盘IO的性能,进行相应的优化。

四、sar命令:内存状态的“定期复查记录”

sar命令类似于内存的“定期复查记录”,它与free命令功能类似,但更适合用于“长期监控”。例如,如果希望每隔3秒查看一次内存变化情况,无需手动刷新,sar命令可以自动持续输出内存信息。

(一)使用方法:持续监控,轻松掌握

在终端中输入以下命令,即可实现每隔3秒输出一次内存信息,按Ctrl + C组合键可以停止监控:

sar -r 3

其中,参数“-r”表示查看内存使用率相关统计,后面的“3”是统计间隔(秒)。

(二)结果解读:与free“互通有无”

在这里插入图片描述

sar命令的输出字段和free命令的核心含义一致,例如kbmemfree(空闲内存)、kbmemused(已用内存)、kbbuffers(缓冲区)、kbcached(缓存区)等,只是显示格式有所不同。通过sar命令,用户可以快速了解服务器的内存状态,特别适合需要“长期观察内存变化”的场景,例如监控某程序运行时的内存消耗情况。

五、内存排查思路:高效定位问题的“三步法”

为了提高内存排查的效率,可以按照“先整体、再细节、后长期”的思路进行操作:

(一)第一步:用free快速判断“内存够不够”

首先输入“free -h”命令,查看available(可用内存)的占比情况。如果available值大于总内存的20%,说明内存充足;如果小于10%,则表明内存紧张,需要进一步深入排查。

(二)第二步:用vmstat找“瓶颈在哪”

如果free命令显示内存紧张,接下来输入“vmstat 5 3”命令,仔细观察swap的si/so(判断是否在使用备用仓库)、procs的r/b(查看进程是否排队)、IO的wa(确定是否因IO拖慢系统)等指标。通过这些数据,可以定位问题究竟是单纯的内存问题,还是内存与CPU/IO混合导致的问题。

(三)第三步:用sar做“长期监控”

如果想跟踪某程序(例如新上线的APP)的内存消耗情况,输入“sar -r 3”命令,持续观察内存的变化趋势。通过长期监控,可以判断程序是否存在“内存泄漏”问题,即程序在运行过程中内存使用量逐渐增加,最终导致内存耗尽。

六、总结

free、vmstat、sar这三个命令在服务器内存排查中各有其独特的用途:

到此这篇关于服务器内存排查之free、vmstat、sar命令实战的文章就介绍到这了,更多相关服务器内存排查free、vmstat、sar命令内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文