利用linux的sar快速监控系统高负载原因

一.现象线上接口非常卡顿,经查服务器负载很高

二.查看prometheus监控CPU使用率和负载

如下图所示CPU使用率达到60%左右,系统负载超过1。

需要注意的是:CPU利用率在60%的时候,系统负载已经接近或者突破1了。

当系统负载接近1的时候进程就会排队。

由于prometheus监控粒度比较粗,而且默认没有CPU的steal,虽然经过调整可以调出steal,和sar相比还是sar更强大一些,特别有时候可能没有prometheus的时候,使用sar就非常轻量。

三.使用Linux的 sar命令

#sar -u -s 07:00:00 -e 22:00:00

这里默认10分钟进行一次统计,可以粗略的看出系统的负载情况。

其中重点关注 %steal(虚拟化环境中的 CPU 资源争抢情况)

关键指标分析

1. %steal(CPU 窃取时间)
  • 定义:虚拟机因宿主机资源不足被剥夺的 CPU 时间占比。

  • 您的数据

    • 正常时段:0.12%~0.35%(绿色安全范围)

    • 高峰时段:20:00-20:10 达 1.94%~2.39%(黄色警告范围)

  • 结论

    • 宿主机在 20:00-20:10 存在资源争抢(可能邻居虚拟机繁忙或宿主机超卖 CPU)。

    • 其他时段表现正常。

2. %user + %system(CPU 总使用率)
  • 20:00-20:10 高峰

    • 用户态 31.06% + 内核态 9.92% = 总使用率 ~41%

    • 结合 %steal 升高,说明此时段既是 应用负载高峰,又是 资源争抢高峰

3. %iowait(I/O 等待)
  • 全程接近 0%,说明 无磁盘 I/O 瓶颈

4. %idle(CPU 空闲)
  • 空闲率与使用率呈镜像关系,20:00-20:10 空闲仅 57.07%,确认负载集中。

 

 四.调整sar的监控间隔

传统的sar配置文件在/etc/cron.d/sysstat 

#cat /etc/cron.d/sysstat

用这个没有输出说明不在。

# 检查 systemd timer
systemctl list-timers | grep -i sysstat

通过这个可以找到。

直接vi修改。

[Unit]
Description=Run system activity accounting tool every 5 minutes

[Timer]
OnCalendar=*:00/10

[Install]
WantedBy=sysstat.service

 直接调整OnCalendar=*:00/1    然后保持退出

重启systemctl daemon-reload重新加载

#systemctl daemon-reload

再次打开sar就是以分钟为单位进行监控。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值