【概述】sarSystem Activity Reporter是Linux系统中用于收集、报告和保存系统活动信息的工具。它属于sysstat工具包的一部分能够监控CPU、内存、磁盘、网络等系统资源的使用情况为系统卡死等问题提供可追溯的分析依据。今天笔者将基于银河麒麟系统结合实际案例展现sar命令的高效用法【 问题描述 】这里我们先看案例一台银河麒麟服务器系统ssh连接失败VNC能连接但是任何操作都没有反应且提示fork失败无法分配内存。重启后能用但是大概过个一两天又会复现【 排查思路 】1、根据提示直接定位日志提取日志中关于fork、oom关键词的内容 cat /var/log/messages | egrep -i fork|oom一开始执行这个返回结果为空猜测是问题发生之后日志轮转过了所以当前的messages日志中没有相关的内容查看/var/log/所有的messages日志 ls /var/log/messages*与用户确认问题发生在18号查看20251221的messages日志可以看到unetdns-system等服务因为内存不足而启动失败cat /var/log/messages--20251221.17 | egrep -i fork|oomcat /var/log/messages--20251221.17 | egrep -C 10 -i fork|oom接下来需要进一步定位是什么导致的内存不足这个时候需要用到sa日志和sar命令啦这里我们可以看到/var/log/sa目录下保存了最近一个月每一天的sa日志我们找到12月18日的sa日志为sa18ls -l /var/log/sa/*查看sa18日志中的内存使用情况sar -r -f /var/log/sa/sa18这个图乍一看挺不好看的细一看也不好看我直接让ai帮我整理了个表一目了然到这里我们明白了从下午三点到晚上十点半内存直接从五百G干到24G,这种水库泄洪式的内存消耗让人头皮发麻同时也让人立马联想到内存泄露后面的处理是给了用户一个系统性能监控脚本实时监控cpu、内存、磁盘io占用较高的进程的情况也定位到了是用户自己的服务存在内存泄露由用户自行修改代码解决【 知识详解 】sar命令的安装1、查看命令所属软件包银河麒麟系统一般自带sysstat#银河麒麟桌面系统sar或sar.sysstat命令都能用但是要查看所属软件包需要查sar.sysstat绝对路径sar可能查不到 rootkylin-pc:~# which sar.sysstat /usr/bin/sar.sysstat rootkylin-pc:~# dpkg -S /usr/bin/sar.sysstat sysstat: /usr/bin/sar.sysstat #银河麒麟服务系统 [rootlocalhost ~]# which sar /usr/bin/sar [rootlocalhost ~]# rpm -qf /usr/bin/sar sysstat-12.2.1-1.p00.gfb01.ky10.x86_642、如果没有sysstat需要手动安装#银河麒麟桌面系统 rootkylin-pc:~# apt install sysstat #银河麒麟服务器系统 [roothost2 ~]# yum -y install sysstat3、安装了sysstat之后会在/var/log创建一个sysstat桌面版或sa服务器版目录下面保存了不同日期的资源占用快照#桌面版 rootkylin-pc:~# dpkg -L sysstat | grep /var/log/sysstat /var/log/sysstat #服务器版 [rootlocalhost ~]# rpm -ql sysstat| grep /var/log/sa /var/log/sa【 知识详解 】sar命令的用法一、sar命令基本语法#基本语法 sar [选项] [间隔时间] [次数] 间隔时间采集间隔秒 次数采集次数 #将统计结果保存到文件 sar -o sar -f sar -o test 1 3 #保存 sar -f test #查看二、常用命令选项和指标查看1.cpu相关sar -u # CPU 使用率默认 sar -u ALL # 显示更详细的 CPU 统计 sar -P ALL # 显示每个 CPU 核心的统计 sar -q # 系统负载和队列长度1CPU 指标sar -u详解指标说明正常范围参考%user用户空间 CPU 使用率持续高于70%可能表明应用程序存在计算密集型任务或优化不足%nice低优先级进程CPU占用异常增高可能影响关键任务响应%system内核空间 CPU 使用率通常不应持续过高如30%。高值可能表示系统调用频繁或内核处理任务重%iowaitCPU 等待 I/O 的时间百分比长期高于10%需检查磁盘性能或I/O队列%steal虚拟化环境下被偷取的 CPU 时间仅虚拟化 10% 表示宿主资源竞争激烈持续 20% 可能严重影响虚拟机性%idleCPU 空闲时间百分比过低如 10-20%表示系统整体负载很高CPU 资源紧典型排查方向高%iowait结合sar -d分析磁盘I/O。高%system检查内核日志dmesg或系统调用追踪strace。低%idle 高负载使用top/pidstat定位具体进程。2负载指标sar -q详解指标说明正常参考范围runq-sz运行队列长度等待运行的进程数每核的CPU不能超过3个每核 ≤3plist-sz进程列表中的进程processes和线程数threads的数量视系统负载和配置而定ldavg-11 分钟平均负载多核CPU过去一分钟的负载相加除以核心数得出的平均值建议 ≤ CPU 核心数 × 0.7ldavg-55 分钟平均负载建议 ≤ CPU 核心数 × 0.7ldavg-1515 分钟平均负载建议 ≤ CPU 核心数 × 0.72. 内存相关sar -r # 内存使用情况 sar -B # 分页统计 sar -W # 交换统计 sar -S # 交换空间使用情况1内存指标sar -r详解指标说明正常范围参考kbmemfree空闲物理内存KB根据总内存比例建议 10%kbavail可用内存含缓存/缓冲KB越高越好无固定阈值kbmemused已使用物理内存KB依赖应用负载通常 90%%memused内存使用百分比建议 80%-90%kbbuffers内核缓冲区使用的内存KB动态变化无固定范围kbcached内核缓存使用的内存KB越高越好加速IOkbcommit系统当前承诺内存量KB应小于kbswpfree%commit承诺内存占总内存比例建议 70%kbactive活跃内存频繁访问KB高负载时可能较高kbinact非活跃内存较少访问KB可被回收无固定范围kbdirty等待写入磁盘的脏数据KB短期波动长期高值需警惕关键说明空闲/可用内存kbmemfree是未分配的内存kbavail包含可快速回收的缓存。缓存/缓冲区kbcached和kbbuffers高是正常现象提升IO性能。2分页统计sar -B命令详解指标说明正常参考范围pgpgin/s每秒从磁盘或其他存储设备读入内存的页面数单位页/秒。反映内存不足时从外部加载数据的频率。持续高于 100 可能表明内存压力较大。pgpgout/s每秒从内存写出到磁盘或其他存储设备的页面数单位页/秒。反映内存回收或交换的频率。持续高于 100 需关注交换空间使用情况。fault/s每秒发生的缺页异常次数次/秒。包括次缺页无需磁盘I/O和主缺页需磁盘I/O。数值波动正常但主缺页majflt/s应较低。majflt/s每秒发生的主缺页次数次/秒。需从磁盘加载数据性能影响显著。长期接近 0 为佳高于 10 需优化内存配置。pgfree/s每秒被释放到空闲列表的页面数页/秒。反映系统内存回收效率。无固定范围与系统负载相关。pgscank/s每秒被内核扫描的页面数页/秒。用于kswapd守护进程回收内存。高值可能表示内存不足。pgscand/s每秒被直接扫描的页面数页/秒。因内存压力紧急触发非通过kswapd。频繁出现表明内存紧张。pgsteal/s每秒从内存中回收的页面数页/秒。包括文件缓存和匿名内存。高值伴随高pgscan说明内存压力大。%vmeff页面回收效率百分比。计算公式pgsteal/(pgscankpgscand)*100越高表示回收越有效。接近 100% 为佳低于 30% 需调查原因。注意事项参考范围因系统负载和硬件配置而异需结合历史基线分析。若majflt/s或pgscand/s持续偏高建议检查应用程序内存使用或增加物理内存。%vmeff过低可能表明页面扫描效率低下需调整内核参数如vm.swappiness。3交换统计sar -W命令详解指标说明正常参考范围pswpin/s每秒从交换分区到内存的交换页面数量长期为0或接近0持续较高值可能表示内存不足pswpout/s每秒从内存到交换分区的交换页面数量长期为0或接近0持续较高值可能表示内存不足补充说明指标来源sar -W主要用于监控系统交换活动数据来源于/proc/vmstat。正常范围理想情况下交换活动应极少发生值为0或接近0。若持续出现较高值需检查内存使用情况如free -h或sar -r。排查建议若交换频繁可结合sar -B分页统计和sar -r内存使用进一步分析。4交换空间使用情况sar -S命令详解指标说明正常参考范围kbswpfree系统当前可用的空闲交换空间大小单位KB。根据实际需求通常建议保留一定空闲空间如总 swap 的 10%-20%。kbswpused系统当前已使用的交换空间大小单位KB。长期接近 0 为佳若持续较高可能需优化内存配置。%swpused已使用的交换空间占总交换空间的百分比。5% 为理想状态30% 需警惕内存不足。kbswpcad缓存到交换空间的页面大小单位KB通常指被交换出但未修改的内存页。较低值接近 0表示缓存效率高。%swpcad缓存到交换空间的页面占已用交换空间的百分比。高百分比如 70%可能表明内存压力大。补充说明正常范围需结合具体应用场景如长期高%swpused可能需扩展内存或优化应用。kbswpcad和%swpcad反映内存回收效率过高值可能影响性能。交换空间kbswpused非零不一定异常但持续增长可能预示内存不足。3. 磁盘 I/O相关sar -b # I/O 和传输速率统计 sar -d # 块设备活动每设备 sar -dp # 可读的设备名显示1磁盘 I/O 指标sar -b)详解指标说明正常参考范围/关键解读tps每秒传输次数I/O 请求数100 表示 I/O 繁忙rtps每秒钟从磁盘读取的 I/O 总数需结合 wtps 分析读写比例wtps每秒钟写入到磁盘的 I/O 总数持续高值可能磁盘成为瓶颈bread/s每秒钟从磁盘读取的块总数512字节块与业务负载相关无固定阈值bwrtn/s每秒钟写入到磁盘的块总数512字节块持续高值需检查磁盘性能或应用写入模式补充说明rtps/wtps 比例反映读写压力分布接近1:1为混合型显著偏差则可能为读/写密集型场景。bread/s 和 bwrtn/s 的绝对值需结合磁盘带宽如 SSD/HDD 的吞吐上限评估。4. 网络相关sar -n DEV # 网络设备统计 sar -n EDEV # 网络错误统计 sar -n SOCK # 套接字使用情况1网络设备统计sar -n DEV详解指标说明正常参考范围IFACE网络接口名如 eth0、ens33 等具体接口名rxpck/s每秒接收包数通常 1000视网络负载而定txpck/s每秒发送包数通常 1000视网络负载而定rxkB/s每秒接收千字节数通常 100MB/s视带宽而定txkB/s每秒发送千字节数通常 100MB/s视带宽而定rxcmp/s每秒接收压缩包数通常接近 0非压缩网络流量txcmp/s每秒发送压缩包数通常接近 0非压缩网络流量rxmcst/s每秒接收多播包数视应用场景而定通常较低%ifutil接口利用率百分比70%避免持续高负载注意事项正常范围参考值需结合具体网络环境和硬件性能调整高负载场景可能需扩容。异常判断持续接近或超过参考范围上限可能预示拥塞或性能瓶颈。关键解读rxpck/s 和 txpck/s与网卡规格对比千兆网卡 ≈ 148,800 pps64字节包包数高但字节数低小包多如DNS查询、游戏rxkB/s 和 txkB/s检查是否接近网卡带宽上限千兆网卡理论最大约 119 MB/s%ifutil 70% 网络繁忙接 近 100% 网络饱和注意很多网卡驱动不报告准确利用率此值可能不准2网络错误统计(sar -n EDEV)详解指标说明正常参考范围IFACE网络接口名称如 eth0、ens33-rxerr/s每秒接收错误数接近于 0通常 1txerr/s每秒发送错误数接近于 0通常 1coll/s每秒冲突数仅半双工模式有效接近于 0通常 1rxdrop/s接收时因缓冲区满导致的丢包数接近于 0通常为 0txdrop/s发送时因缓冲区满导致的丢包数接近于 0通常为 0txcarr/s发送时载波错误数接近于 0通常为 0rxfram/s接收时帧对齐错误数必须为 0rxfifo/s接收时 FIFO 溢出错误数必须为 0txfifo/s发送时 FIFO 溢出错误数必须为 0关键说明错误类指标如 rxerr/s、txerr/s短暂的小幅波动可能由网络干扰引起但持续偏高需检查硬件或驱动。丢包类指标如 rxdrop/s、txdrop/s非零值可能表明网络拥塞或系统资源不足。FIFO/帧错误如 rxfifo/s、rxfram/s必须为 0出现数值通常为硬件故障或驱动异常。任何错误都不应为正数除 coll/s 在旧式网络中关键解读rxerr/s 或 txerr/s 0可能网卡故障、电缆问题、驱动问题rxdrop/s 或 txdrop/s 0网络缓冲区不足CPU 处理不过来软中断瓶颈rxfram/s 0物理层问题电缆、接口3套接字使用情况sar -n SOCK指标说明正常参考范围totsck系统当前使用的所有套接字总数包括TCP、UDP、RAW等。无固定范围需结合业务场景监控。tcpsck当前正在使用的TCP套接字数量。依赖应用连接数持续增长需排查。udpsck当前正在使用的UDP套接字数量。通常较低突发增长需检查应用。rawsck原始套接字RAW数量常用于ICMP等协议。通常为0或极低值。ip-fragIP分片数据包数量高值可能表明MTU设置问题或网络攻击。理想情况下接近0。tcp-tw处于TIME_WAIT状态的TCP连接数频繁短连接可能导致升高。短期峰值正常持续高值需优化。补充说明正常范围多数指标无绝对标准需根据历史基线或业务负载判断。例如tcp-tw若应用频繁创建短连接可能长期偏高需优化连接复用。ip-frag持续非零值可能需调整MTU或排查网络设备。监控建议结合sar -n SOCK的历史数据如sar -n SOCK 1 10观察趋势。关键解读totsck 接近上限检查 /proc/sys/net/c ore/somaxconn检查 / proc/sys/net/ipv4/tcp_max_syn_backlogip-frag 0MTU 设置可能有问题网络路径有低 MTU 链路5、进程和内核活动相关sar -w #进程创建和切换 sar -v #内核表状态1sar -w 指标详解指标说明正常参考范围proc/s每秒创建的进程数几十到几百cswch/s每秒上下文切换次数N CPU × 10,000 为基准异常情况proc/s 1000可能为 fork 炸弹或配置问题cswch/s 过高可能是锁竞争、I/O 等待或进程过多2sar -v 指标详解指标说明正常参考范围dentunusd目录项缓存未使用数无固定范围监控趋势file-nr已分配文件句柄数格式已分配/未使用/最大值inode-nr已分配 inode 数接近最大值需清理或扩容pty-nr已分配伪终端数根据实际需求监控异常情况file-nr 接近最大值需调整fs.file-maxinode-nr 接近最大值需清理文件或扩容6、sar中断相关命令及指标说明sar -I SUM 1或sar -I ALL 1SUM表示总中断ALL表示所有中断的详细统计1为采样间隔秒数指标说明正常参考范围INTR每秒中断总数包括硬件和软件中断无固定范围需基线对比。通常越低越好。sum所有CPU的每秒总中断次数-I SUM时显示依赖系统负载突增需排查异常。IRQ编号具体IRQ编号的中断次数如NMI、LOC等-I ALL时显示特定IRQ过高可能硬件或驱动问题。LOC本地定时器中断Local timer interrupts通常稳定过高可能配置不当。RES调度器唤醒闲置CPU的中断Rescheduling interrupts多核系统中可能较高但需均衡。CAL函数调用中断Call-function interrupts通常较低突增需分析进程调度。TLBTLB刷新中断Translation Lookaside Buffer flushes过高可能内存访问模式异常。关键注意事项基线对比中断频率与硬件、负载强相关需长期监控建立基线。异常排查若特定IRQ如网卡、磁盘持续高位检查硬件或驱动配置。上下文切换高中断可能伴随cscontext switch指标上升需结合sar -w分析。