> 地理
jvm性能调优实战(jvm调优是什么意思)
导语:一文看懂jvm 性能调优工具之 jstack
概述
今天主要分享下怎么用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最高的线程号根据线程号查出对应的java线程,进行处理。1、查消耗cpu最高的进程PID
执行top -c ,显示进程运行信息列表。按下P,进程按照cpu使用率排序
根据top命令,发现占用cpu最高的进程PID:1363
通过ps aux | grep PID命令,进一步查看当前进程的具体信息。
2、 根据PID查出消耗cpu最高的线程号
命令1:ps -mp pid -o THREAD,tid,time
命令2:top -Hp 1363,显示一个进程的线程运行信息列表。按下P,进程按照cpu使用率排序
如下图所示,PID为1371的线程耗费cpu最高
3、找到耗时最高的线程TID,并将其线程ID转换为16进制格式:
printf "%x\n" tid
4、根据线程号查出对应的java线程,进行处理
执行命令,导出进程快照
jstack -l 3033 > ./3033.stack
然后执行,grep命令,看线程55b做了什么
jstack pid |grep tid -A 30
进一步分析堆栈信息,就会定位到问题所在
后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~
免责声明:本站部份内容由优秀作者和原创用户编辑投稿,本站仅提供存储服务,不拥有所有权,不承担法律责任。若涉嫌侵权/违法的,请与我联系,一经查实立刻删除内容。本文内容由快快网络小娴创作整理编辑!