【JAVA线上问题解决】JAVA应用程序CPU持续飙高,如何排查问题,如何快速定位问题,解决问题?

【JAVA线上问题解决】JAVA应用程序CPU持续飙高,如何排查问题,如何快速定位问题,解决问题?

场景一、JAVA程序中某个线程占用CPU飙高,问题定位 top、jstack命令的使用

四步教你快速定位问题代码

1. top命令获取异常的java进程 PID
    top
2. 查询异常进程中的线程情况, 获取异常线程的线程ID
    top -Hp {PID}
3. 将线程ID转为十六进制
    printf "%x\n"  线程ID 
4. jstack工具跟踪堆栈定位问题代码
    jstack 进程PID | grep 十六进制的线程ID -A 30
 

场景二、JAVA程序中不上某个线程占用CPU飙高,问题定位 vmstat、 top、jstack命令的使用

如果不是单独的某个线程导致cpu飙高,那可能是多个线程之间切换导致cpu占用持续飙高。可以通过vmstat 命令来判断

1. 查询线程切换的频率,2秒刷新一次

vmstat 2 

2. 定位问题线程

top -Hp {PID}

3. 找到任意一个问题线程,线程id转换成十六进制

    printf "%x\n"  线程ID 

4. jstack工具跟踪堆栈定位问题代码
    jstack 进程PID | grep 十六进制的线程ID -A 30
 

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值