首页 智能家居

Linux 性能瓶颈排查利器:sar 命令详解与实战案例

分类:智能家居
字数: (4016)
阅读: (9247)
内容摘要:Linux 性能瓶颈排查利器:sar 命令详解与实战案例,

在服务器运维过程中,我们经常会遇到 CPU 占用率过高、磁盘 I/O 达到瓶颈等性能问题。这时,我们需要一款强大的工具来帮助我们诊断问题,sar 命令就是这样一款利器。sar (System Activity Reporter) 能够全面地报告 Linux 系统的各项活动信息,包括 CPU 使用率、内存使用情况、磁盘 I/O、网络流量等等,为我们定位性能瓶颈提供有力的数据支撑。

sar 命令的基本使用

sar 命令的基本语法如下:

Linux 性能瓶颈排查利器:sar 命令详解与实战案例
sar [选项] [间隔时间] [重复次数]
  • 选项: 用于指定要报告的系统活动类型,例如 -u 报告 CPU 使用率,-r 报告内存使用情况,-d 报告磁盘 I/O 等等。
  • 间隔时间: 指定报告之间的时间间隔,单位为秒。
  • 重复次数: 指定报告的次数。如果不指定重复次数,则 sar 会一直报告,直到手动停止。

例如,要每隔 1 秒报告一次 CPU 使用率,重复 5 次,可以使用以下命令:

Linux 性能瓶颈排查利器:sar 命令详解与实战案例
sar -u 1 5

常用 sar 命令选项详解

以下是一些常用的 sar 命令选项:

Linux 性能瓶颈排查利器:sar 命令详解与实战案例
  • -u:报告 CPU 使用率。输出的指标包括 %user (用户态 CPU 使用率)、%nice (nice 进程 CPU 使用率)、%system (内核态 CPU 使用率)、%iowait (等待 I/O CPU 使用率)、%steal (被虚拟机偷走的 CPU 使用率)、%idle (空闲 CPU 使用率)。
  • -r:报告内存使用情况。输出的指标包括 kbmemfree (空闲内存大小)、kbmemused (已用内存大小)、%memused (内存使用率)、kbbuffers (用于缓冲区内存大小)、kbcached (用于缓存的内存大小)。
  • -d:报告磁盘 I/O。输出的指标包括 tps (每秒传输数)、rd_sec/s (每秒读取扇区数)、wr_sec/s (每秒写入扇区数)、await (平均 I/O 等待时间)、svctm (平均 I/O 服务时间)、%util (磁盘利用率)。当磁盘 %util 接近 100% 时,说明磁盘 I/O 已经达到瓶颈。
  • -n DEV:报告网络接口的流量。输出的指标包括 rxpck/s (每秒接收数据包数)、txpck/s (每秒发送数据包数)、rxkB/s (每秒接收数据量)、txkB/s (每秒发送数据量)。
  • -b:报告 I/O 和传输速率的统计信息。
  • -q:报告队列长度和负载的统计信息。
  • -W:报告交换分区的使用情况。
  • -A:报告所有活动信息。

使用 sar 命令分析 Nginx 性能瓶颈

假设我们使用 Nginx 作为 Web 服务器,发现网站访问速度变慢。我们可以使用 sar 命令来分析 Nginx 的性能瓶颈。

Linux 性能瓶颈排查利器:sar 命令详解与实战案例

首先,我们可以使用 sar -u 1 10 命令来查看 CPU 使用率。如果 %iowait 很高,说明可能是磁盘 I/O 导致了性能瓶颈。这时,我们可以使用 sar -d 1 10 命令来查看磁盘 I/O。如果磁盘 %util 接近 100%,说明磁盘 I/O 已经达到瓶颈。我们可以考虑更换更快的磁盘,或者使用 RAID 技术来提高磁盘 I/O 性能。同时也要检查 Nginx 的 access log,是否存在大量的慢请求。还可以通过 tcpdump 抓包分析网络是否存在异常。

如果 %user%system 都很高,说明可能是 CPU 密集型操作导致了性能瓶颈。我们可以使用 top 命令来查看哪些进程占用了大量的 CPU 资源。例如,可能是 Nginx 的 worker 进程占用了大量的 CPU 资源,这时,我们可以考虑优化 Nginx 的配置,例如增加 worker 进程的数量,或者使用缓存技术来减少 CPU 的负载。

此外,如果内存使用率很高,可以使用 sar -r 1 10 命令来查看内存使用情况。如果 kbcachedkbbuffers 很高,说明可能是缓存占用了大量的内存资源。我们可以调整 Linux 的内核参数,例如 vm.vfs_cache_pressure,来控制缓存的使用。

sar 命令实战避坑经验总结

  • 理解 sar 命令输出的指标含义: 只有理解了 sar 命令输出的指标含义,才能正确地分析系统性能瓶颈。
  • 结合其他工具一起使用: sar 命令只是一个工具,我们需要结合其他工具,例如 topvmstatiostat 等,才能更全面地了解系统性能。
  • 关注趋势变化: 不要只看 sar 命令的单次输出,要关注指标的趋势变化,才能更准确地判断系统性能瓶颈。
  • 提前规划历史数据存储:默认情况下,sar 命令的历史数据存储在 /var/log/sa/ 目录下,并且只会保留最近一段时间的数据。如果需要长期监控系统性能,需要配置 sar 命令的历史数据存储,例如可以配置 sar 命令每天生成一个独立的数据文件。可以使用 sadc 命令定时采集数据,并使用 sa1sa2 等脚本进行数据汇总和存储。同时,可以通过配置 logrotate 来管理历史数据,避免磁盘空间被占满。
  • 注意时间同步:确保服务器的时间是同步的,否则 sar 命令输出的数据可能会出现偏差。可以使用 ntp 或者 chrony 等工具来同步服务器时间。

总之,sar 命令是一款非常强大的 Linux 系统性能监控工具,掌握 sar 命令的使用,可以帮助我们快速定位系统性能瓶颈,提高服务器的稳定性和性能。

Linux 性能瓶颈排查利器:sar 命令详解与实战案例

转载请注明出处: linuxer_zhao

本文的链接地址: http://m.acea2.store/blog/202113.SHTML

本文最后 发布于2026-04-14 11:41:38,已经过了13天没有更新,若内容或图片 失效,请留言反馈

()
您可能对以下文章感兴趣
评论
  • 折耳根yyds 3 天前
    sar 命令的输出指标太多了,每次都看得眼花缭乱,有没有更简单易懂的监控工具推荐?
  • 蛋炒饭 22 小时前
    sar 命令的输出指标太多了,每次都看得眼花缭乱,有没有更简单易懂的监控工具推荐?
  • 云南过桥米线 4 天前
    感谢分享,学习了!之前只知道用 top 命令,现在又多了一个选择。
  • 芝麻糊 4 天前
    可以结合 Grafana 和 Prometheus 做可视化监控,更直观一些。
  • 柚子很甜 7 小时前
    感谢分享,学习了!之前只知道用 top 命令,现在又多了一个选择。