CPU飙升排查

简介: CPU飙升排查

CPU飙升

线上资源cpu飙升是我们工作中常见的问题,一篇文章搞定排查方法


一、问题复现

  • 现在我有两个接口,代码如下
@RestController
public class CPUCheck {
  @RequestMapping("/hello")
  public String helloWorld(){
      return "hello World";
  }
  @RequestMapping("/run")
  public void run(){
      while (true){
      }
  }
}
  • 代码很简单 接口1“/hello” 返回“hello World”,接口2“/run” 进入死循环,这样就保证了访问接口2cpu升高。

二、测试

  1. 1.我们将项目打包部署在服务器上,并启动
  2. image.png
  3. 2.测试接口
curl http://localhost:9901/thing-test/hello

image.png

三、排查

  1. 1.通过top命令可以查看到有一个java进程占用cpu资源异常
  2. 2.获取pid为32306
  3. 3.通过命令查询tid
命令:ps -mp 【pid】 -o THREAD,tid,time
实例:ps -mp 32306 -o THREAD,tid,time

image.png

  1. a.可以看到引起cpu异常的tid是32327
  2. b.因为现在的tid32327是十进制的,需要将其转化为十六进制
命令:printf "%x\n" 【十进制tid】
实例:printf "%x\n" 32327

image.png

  1. 1.根据pid 和 tid查询导致cpu飙升的代码
命令:jstack 【10进制pid】 | grep 【16进制tid】 -A 20
实例:jstack 32306 | grep 7e47 -A 20

image.png

image.png


相关文章
|
6月前
|
监控 Java 索引
cpu使用率过高和jvm old占用过高排查过程
cpu使用率过高和jvm old占用过高排查过程
160 2
|
3月前
|
小程序 JavaScript Java
【Java】服务CPU占用率100%,教你用jstack排查定位
本文详细讲解如何使用jstack排查定位CPU高占用问题。首先介绍jstack的基本概念:它是诊断Java应用程序线程问题的工具,能生成线程堆栈快照,帮助找出程序中的瓶颈。接着,文章通过具体步骤演示如何使用`top`命令找到高CPU占用的Java进程及线程,再结合`jstack`命令获取堆栈信息并进行分析,最终定位问题代码。
292 1
【Java】服务CPU占用率100%,教你用jstack排查定位
|
3月前
|
监控 安全 算法
在Linux中,cpu使用率过高可能是什么原因引起的?排查思路是什么?
在Linux中,cpu使用率过高可能是什么原因引起的?排查思路是什么?
|
3月前
|
消息中间件 Java 调度
一次线上服务CPU100%的排查过程
文章记录了一次线上服务CPU使用率达到100%的排查过程,通过使用top命令和jstack工具确定了导致高CPU使用的线程,并分析了Disruptor组件的不当配置是问题原因,通过修改组件的策略成功解决了问题。
75 0
|
3月前
|
Java
靠这三步就能排查CPU占用100%?
靠这三步就能排查CPU占用100%?
159 0
|
4月前
|
Java
手把手教你java CPU飙升300%如何优化
手把手教你java CPU飙升300%如何优化
60 0
|
4月前
|
监控 Java 中间件
FGC频繁导致CPU 飙升定位及JVM配置优化总结
FGC频繁导致CPU 飙升定位及JVM配置优化总结
160 0
|
4月前
|
缓存 弹性计算 监控
云服务器 CPU 使用率高的问题排查与优化
云服务器 CPU 使用率高的问题排查与优化
401 0
|
6月前
|
监控 数据可视化 Java
Elasitcsearch CPU 使用率突然飙升,怎么办?
Elasitcsearch CPU 使用率突然飙升,怎么办?
134 1
|
5月前
|
SQL Java Linux
Linux系统cpu飙升到100%排查方案
Linux系统cpu飙升到100%排查方案
431 0