登陆

章鱼彩票电话-面试官:如何用jstack定位CPU瓶颈问题?

admin 2019-10-29 179人围观 ,发现0个评论

概述

今日首要共享下怎章鱼彩票电话-面试官:如何用jstack定位CPU瓶颈问题?样用jstack来定位毛病,全体进程如下,由于数据库没啥瓶颈,所以倒不怎样看得出来。


Jstack 用法

参数阐明:

  • -l 长列表. 打印关于锁的附加信息,例如归于java.util.concurrent 的 ownable synchronizers列表.
  • -F 当’jstack [-l] pid’没有相应的时分强制打印栈信息
  • -m 打印java和native c/c++结构的一切栈信息.
  • -h | -help 打印协助信息

pid 需求被打印装备信息的java进程id,能够用jps查询.


思路:

  • 查消耗cpu最高的进程PID
  • 依据PID查出消耗cpu章鱼彩票电话-面试官:如何用jstack定位CPU瓶颈问题?最高的线程号
  • 依据线程号查出对应的java线程,进行处理。

1、查消耗cpu最高的进程PID

履行top -c ,显现进程运转信息列表。按下P,进程依照cpu使用率排序简

依据top指令,发现占用cpu最高的进程PID:1363

经过ps aux | grep PID指令,进一步检查当时进程的详细信息。


2、 依据PID查出消耗cpu最高的线程号

指令1:ps -mp pid -o章鱼彩票电话-面试官:如何用jstack定位CPU瓶颈问题? THREAD,tid,time

指令2:top -Hp 1363,显现一个进程的线程运转信章鱼彩票电话-面试官:如何用jstack定位CPU瓶颈问题?息列表。按下P,进程依照cpu使用率排序

如下图所示,PID为1371的线程消耗cpu最高


3、找到耗时最高的线程TID,并将其线程ID章鱼彩票电话-面试官:如何用jstack定位CPU瓶颈问题?转换为16进制格局:

printf "%x\n" tid


4、依据线程号查出对应的java线程,进行处理

履行指令,导出进程快照

jstack -l 3033 > ./3033.stack

然后履行,grep指令,看线程55b做了什么

jstack pid |grep tid -A 30

进一步剖析仓库信息,就会定位到问题所在


后边会共享更多devops和DBA方面的内容,感兴趣的朋友能够重视下~

请关注微信公众号
微信二维码
不容错过
Powered By Z-BlogPHP