运维-JVM监控之线程问题
2017-05-05 17:12
1186 查看
jstack主要用来查看某个Java进程内的线程堆栈信息
1、ps -ef |grep 应用名称 --获取pid
2、top -Hp pid --找出该进程内最耗费CPU的线程
例:top -Hp 31385
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
31499 admin 20 0 3795904 591760 14224 S 0.3 3.7 1:12.22 java
31385 admin 20 0 3795904 591760 14224 S 0.0 3.7 0:00.00 java
31388 admin 20 0 3795904 591760 14224 S 0.0 3.7 0:19.00 java
31389 admin 20 0 3795904 591760 14224 S 0.0 3.7 0:01.29 java
31390 admin 20 0 3795904 591760 14224 S 0.0 3.7 0:01.31 java
31391 admin 20 0 3795904 591760 14224 S 0.0 3.7 0:02.11 java
31392 admin 20 0 3795904 591760 14224 S 0.0 3.7 0:00.02 java
31393 admin 20 0 3795904 591760 14224 S 0.0 3.7 0:00.04 java
31394 admin 20 0 3795904 591760 14224 S 0.0 3.7 0:00.00 java
31395 admin 20 0 3795904 591760 14224 S 0.0 3.7 1:09.64 java
TIME列就是各个Java线程耗费的CPU时间。
3、printf "%x\n" 线程id --将线程id转化为十六进制
例:printf "%x\n" 31499
7b0b
4、jstack pid | grep 十六进制线程id --查询堆栈信息
例:jstack 31385|grep 7b0b
"MQ-AsyncArrayDispatcher-Thread-31385#-1244857759#-1596142409#9048915282620395" #72 daemon prio=5 os_prio=0 tid=0x00007f6c058ea800 nid=0x7b0b in Object.wait() [0x00007f6be22a1000]
定位:线程名为MQ-AsyncArrayDispatcher-.....,wait()方法。
1、ps -ef |grep 应用名称 --获取pid
2、top -Hp pid --找出该进程内最耗费CPU的线程
例:top -Hp 31385
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
31499 admin 20 0 3795904 591760 14224 S 0.3 3.7 1:12.22 java
31385 admin 20 0 3795904 591760 14224 S 0.0 3.7 0:00.00 java
31388 admin 20 0 3795904 591760 14224 S 0.0 3.7 0:19.00 java
31389 admin 20 0 3795904 591760 14224 S 0.0 3.7 0:01.29 java
31390 admin 20 0 3795904 591760 14224 S 0.0 3.7 0:01.31 java
31391 admin 20 0 3795904 591760 14224 S 0.0 3.7 0:02.11 java
31392 admin 20 0 3795904 591760 14224 S 0.0 3.7 0:00.02 java
31393 admin 20 0 3795904 591760 14224 S 0.0 3.7 0:00.04 java
31394 admin 20 0 3795904 591760 14224 S 0.0 3.7 0:00.00 java
31395 admin 20 0 3795904 591760 14224 S 0.0 3.7 1:09.64 java
TIME列就是各个Java线程耗费的CPU时间。
3、printf "%x\n" 线程id --将线程id转化为十六进制
例:printf "%x\n" 31499
7b0b
4、jstack pid | grep 十六进制线程id --查询堆栈信息
例:jstack 31385|grep 7b0b
"MQ-AsyncArrayDispatcher-Thread-31385#-1244857759#-1596142409#9048915282620395" #72 daemon prio=5 os_prio=0 tid=0x00007f6c058ea800 nid=0x7b0b in Object.wait() [0x00007f6be22a1000]
定位:线程名为MQ-AsyncArrayDispatcher-.....,wait()方法。
相关文章推荐
- 通过jconsole监控tomcat JVM 内存、线程、CPU
- JVM 线程工作理解和Java静态方法的线程安全性问题
- JVM监控工具介绍jstack, jconsole, jinfo, jmap, jdb, jsta (Linux 如何查看进程的各线程的CPU占用 )
- 通过jconsole监控tomcat JVM 内存、线程、CPU
- JVM中线程的状态转换图(面试问题:java线程有哪些状态)
- JVM线程共享问题
- JVM性能调优监控工具专题二:VisualVM基本篇之监控JVM内存,CPU,线程
- 使用Jvisualvm监控JVM的内存、CPU、线程
- Java线程及Jvm监控工具
- 运维-JVM监控之内存泄漏
- 数据库连接池的配置问题-空闲线程的监控和回收. druid 1.8的一个bug
- jvisualvm远程监控 visualgc插件 不受此jvm支持问题
- JVM 线程监控分析基础
- Tomcat中监控JVM内存使用情况(问题补充)
- jvm JConsole工具监控内存和线程演示
- 如果静态方法里面没有存取静态字段的话, 就没有并发的线程安全的问题...(这句话对吗?)
- 坦克游戏遇到的线程问题
- 深入研究Servlet线程安全性问题
- 安全稳定的实现进线程监控
- 关于OS中第一线程的问题解决.