美文网首页
cpu负载突刺问题排查

cpu负载突刺问题排查

作者: java_飞 | 来源:发表于2022-01-20 14:08 被阅读0次

现象:

通过监控工具巡检自己的服务发现服务cpu load存在周期性变高的现象,如图:


image.png

机器的cpu核数是4核,最高点明显超过了4,但是cpu使用率没有明显变高,如图:


image.png

cpu有突刺的现象是gc时引起的,这里先不做赘述;

提出问题

那么是什么原因引起的cpu load变高呢???,又该如何解决呢?

查找问题

一、引起load变高的原因有哪些:
1.磁盘io繁忙,网络io繁忙
2.线程上下文切换频繁
3.cpu繁忙

二、根据上面提出的三个原因去寻找解决方案

1.io繁忙?
image.png
image.png
image.png

由上面三张图对比可以看出负载升高的时候,磁盘io以及网络io并没有任何变化还是保持和之前一样,说明不是io影响的。

2.线程上下文切换频繁?

使用命令:pidstat -w -p <pid>


image.png

由以图可以看出来,每秒自愿上下文切换(voluntary context switches)的次数为0(cswch );
被系统强制调度导致,每秒非自愿上下文切换(non voluntary context switches)的次数(nvcswch)的次数也为0;
说明不是线程频繁切换导致的

3.cpu繁忙导致??

从最上面的cpu整体使用率看到并不是很高,那么应该不是cpu繁忙导致的;
继续向下排查,
pidstat查看java线程内详细信息,可发现用户态cpu使用率很高,长时间占用CPU,导致等待线程增多;


image.png

结合服务业务发现:
该服务是批量拉去kafka消息,然后使用线程池进行消费,而这个线程池使用的拒绝策略为CallerRunsPolicy,也就是当线程池执行不过来,并且阻塞队列也满的时候就会默认使用主线程来进行处理;
继续排查确认:
1.通过命令top -Hp pid 查看进程下最耗费cpu的线程
2.printf “%x\n” 得到线程的16进制
3.jstack 进程 |grep 线程id 获取线程状态
执行以上步骤的到文件,观察发现,最繁忙的线程就是kafka线程


image.png
当线程池满了以后,会默认使用kafka的主线程去进行业务处理,以上也验证了这一点;

解决法案

1、减少一批消息的拉去数量,使当前线程池足够消费;
2、增大线程池数量的核心线程数(这种需要判断当前服务是io密集型还是cpu密集型,此方案选用)
3、更改业务逻辑,减少rpc,尽量减少业务处理,加快消费速度;
以上三种方式可以一起使用,也可以部分使用;

实践方案

1.先减少批量拉取的消息数,观察load是否有降低;

2.因为我的业务服务是网络io密集型,所以我适当增大了业务线程池的核心线程数;

3.最后再来看业务逻辑层面是否存在优化的空间;
前两步结束后,负载已经降低到正常范围时,最后一步业务逻辑优化可选择性的去做;

相关文章

  • cpu负载突刺问题排查

    现象: 通过监控工具巡检自己的服务发现服务cpu load存在周期性变高的现象,如图: 机器的cpu核数是4核,最...

  • CPU负载过高问题排查

    1、找到最耗CPU的进程 top -c ,显示进程运行信息列表 2、找到最耗CPU的线程 top -Hp [pid...

  • 服务cpu突刺问题

    现象 从图中可以看到cpu使用率在某些时刻有突刺现象的存在,是平时正常时候的3-4倍,正常使用时大概在25%,最高...

  • Linux 命令检查服务器性能

    概述 简单通过查询服务器负载、内存、CPU、IO等指标进行排查问题 相关命令 uptime pidstat ps ...

  • Linux系统排查2——CPU负载篇

    本随笔介绍CPU负载的排查手段。 查看系统负载的工具:uptime,w,都能查看系统负载,系统平均负载是处于运行或...

  • CPU高负载排查

    1.找到最耗cpu的进程 工具:top 方法:1. top -c 2.键入P(大写),进程按照CPU的使用...

  • JVM进程占用CPU过高问题排查

    某台机器上的CPU负载过高,通过逐步的排查,解决了问题,下面记录一下整个排查的过程。 首先,登录上对应的机器,通过...

  • 排查linux 系统cpu负载过高问题

    1、使用 top 命令查看cpu占用最多的进程编号2、使用 top -Hp 上一步中的进程id 命令查看占用cpu...

  • Java 程序 CPU 使用率过高问题定位与修复

    问题现象:CPU 负载过高 我们线上的 jenkins 系统,时不时会发生 CPU 负载过高的现象。 CPU 负载...

  • 一次CPU高负载问题排查

    记一次DRBD故障后发现的CPU高负载 故障发现时间: 2018-01-29 11:50IPCDN的DRBD资源发...

网友评论

      本文标题:cpu负载突刺问题排查

      本文链接:https://www.haomeiwen.com/subject/fhljhrtx.html