JVM调优jstack找出最耗cpu的线程&定位问题代码

JVM调优jstack找出最耗cpu的线程&定位问题代码

一、服务器环境

jdk1.8 有多个tomcat容器运行java程序

二、用到的命令

top、printf、jstack、grep

三、排查过程

  1. 用top查出哪个java进程最消耗cpu命令:top 如下图
    在这里插入图片描述这三个指标可以看出进程PID为87010的进程很消耗资源

  2. 根据进程87010查出哪个线程最消耗cpu命令:top -Hp 87010 如下图 在这里插入图片描述通过上图三个指标可以看出线程90255比较消耗资源,TIME列就是各个Java线程耗费的CPU时间。

  3. printf “%x\n” 90255 得到一个16进制的数值 1608f
    4.jstack 87010|grep 1608f,它用来输出进程90255的堆栈信息,然后根据线程ID的十六进制值grep,如下:
    在这里插入图片描述可以看出是线程池ThreadPoolExecutor的问题,ok问题定位到了。


我爱你
为了找你
我搬进了鸟的眼睛里
我注视着风的方向
却忘记了猎人的枪响

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值