600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > linux查看java堆栈信息_Java运行状态分析2:获取线程堆栈信息

linux查看java堆栈信息_Java运行状态分析2:获取线程堆栈信息

时间:2019-04-23 07:14:57

相关推荐

linux查看java堆栈信息_Java运行状态分析2:获取线程堆栈信息

Java运行状态分析2:获取线程堆栈信息

基本概念

出现内存泄漏或者运行缓慢场景,有时候无法直接从业务日志看出问题时候,需要分析jvm内存和线程堆栈

线程堆栈信息主要记录jvm线程在某时刻线程执行情况,分析线程状态可以跟踪到程序出问题的地方

内存堆栈信息主要记录jvm堆中在某时刻对象使用情况,主要用于跟踪是哪个对象占用了太多的空间,从而跟踪导致内存泄漏的地方

跟踪线程信息

查看当前线程数量

actuator

1.x

http://host:port/metrics/threads //当前进程的线程数

http://host:port/metrics/threads.daemon //当前进程后台驻留线程数

http://host:port/metrics/threads.peak //当前进程线程数峰值

2.x

http://host:port/actuator/metrics/jvm.threads.daemon //当前进程后台驻留线程数

http://host:port/actuator/metrics/jvm.threads.live //当前进程的线程数

http://host:port/actuator/metrics/jvm.threads.peak //当前进程线程数峰值

sop hystrix 线程状态

http://host:port/sys/hystrix/threads

linux

ps huH p {pid}|wc -l

jstack生成线程堆栈

当服务cup飙升或者出问题需要从主机层面定位时候,使用top -c 命令查看对应哪个进程占用了过高资源

找到资源占用高的进程

明确需要定位的进程通过如下命令找到对应的进程id

ps aux|grep {application alias}

接下来通过jstack导出对应的线程堆栈

jstack 对应参数如下

-m to print both java and native frames (mixed mode)

-l long listing. Prints additional information about locks

可以通过如下命令定位具体高load线程:

查询进程具体哪个线程占用高load

top -Hp {进程pid}

thread id为十六进制格式转十六进制值

printf %x {线程pid}

指定特定行数堆栈信息

jstack {进程id}|grep -A 200 {线程id}

服务器线程相对较多,文件大小较大,一般不会考虑在服务器看,另外这样查也会导致忽略了一些统计信息

通过如下命令导出文件,下载到本地查

jstack -l {pid} >> {dump-file-path}

如何查看分析dump文件,请看下文

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。