搜索
写经验 领红包
 > 地理

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方面的内容,感兴趣的朋友可以关注下~

免责声明:本站部份内容由优秀作者和原创用户编辑投稿,本站仅提供存储服务,不拥有所有权,不承担法律责任。若涉嫌侵权/违法的,请与我联系,一经查实立刻删除内容。本文内容由快快网络小娴创作整理编辑!