0
点赞
收藏
分享

微信扫一扫

快速找到Tomcat中最耗CPU的线程

无愠色 2023-02-07 阅读 83


1、找出TOMCAT的JVM的进程ID

[work@112542000 ~]$ jps 290 Bootstrap <span style="color: #ff6600;">61213 Jps </span>

[ work @ 112542000 ~ ] $ jps                                                                                                                                         
290 Bootstrap
< span style = "color: #ff6600;" > 61213 Jps
< / span >
————————————————

2、查看该进程中,最耗费CPU的线程

[ work @ 112542000 ~ ] $ ps - mp 290 - o THREAD , tid , time | sort - k2 - r | head - n 20                                                                                     
USER % CPU PRI SCNT WCHAN USER SYSTEM TID TIME
work 15.3 - - - - - - 03 : 11 : 58
< span style = "color: #ff6600;" > work 1.2 19 - - - - 326 00 : 15 : 45
< / span > work 0.2 19 - - - - 872 00 : 03 : 44
work 0.1 19 - - - - 992 00 : 01 : 44
work 0.1 19 - - - - 972 00 : 01 : 16
work 0.1 19 - - - - 870 00 : 01 : 19
work 0.1 19 - - - - 869 00 : 01 : 34
work 0.0 19 - - - - 9993 00 : 00 : 00
work 0.0 19 - - - - 997 00 : 00 : 06
work 0.0 19 - - - - 9969 00 : 00 : 00
work 0.0 19 - - - - 9968 00 : 00 : 00
work 0.0 19 - - - - 996 00 : 00 : 34
work 0.0 19 - - - - 9960 00 : 00 : 00
work 0.0 19 - - - - 995 00 : 00 : 00
work 0.0 19 - - - - 9944 00 : 00 : 00
work 0.0 19 - - - - 994 00 : 00 : 31
work 0.0 19 - - - - 9936 00 : 00 : 00
work 0.0 19 - - - - 9934 00 : 00 : 26
work 0.0 19 - - - - 9933 00 : 00 : 21

3、以TID==326为例,查看该线程的堆栈

首先,将十进制的326转换成十六进制,可以在线转换:

结果等于146

使用jstack查询该线程堆栈:

[ work @ 112542000 ~ ] $ jstack 290 | grep "0x160" - A 10                                                                                                             
"Timer-2955" daemon prio = 10 tid = 0x00007f39d3ecd000 nid = 0x1602 in Object . wait ( ) [ 0x00007f38fb273000 ]
java . lang . Thread . State : TIMED_WAITING ( on object monitor )
at java . lang . Object . wait ( Native Method )
at java . util . TimerThread . mainLoop ( Timer . java : 552 )
- locked < 0x00000007c2a0fc40 > ( a java . util . TaskQueue )
at java . util . TimerThread . run ( Timer . java : 505 )

"Timer-2954" daemon prio = 10 tid = 0x00007f392481e000 nid = 0x15e4 in Object . wait ( ) [ 0x00007f38fbe7f000 ]
java . lang . Thread . State : TIMED_WAITING ( on object monitor )
at java . lang . Object . wait ( Native Method )
at java . util . TimerThread . mainLoop ( Timer . java : 552 )
--
"Timer-2132" daemon prio = 10 tid = 0x00007f39d367d000 nid = 0x1603 in Object . wait ( ) [ 0x00007f3933f46000 ]
java . lang . Thread . State : TIMED_WAITING ( on object monitor )
at java . lang . Object . wait ( Native Method )
at java . util . TimerThread . mainLoop ( Timer . java : 552 )
- locked < 0x00000007b44ef3c8 > ( a java . util . TaskQueue )
at java . util . TimerThread . run ( Timer . java : 505 )

"Timer-2131" daemon prio = 10 tid = 0x00007f39d3b61800 nid = 0x15e6 in Object . wait ( ) [ 0x00007f3934d54000 ]
java . lang . Thread . State : TIMED_WAITING ( on object monitor )
at java . lang . Object . wait ( Native Method )
at java . util . TimerThread . mainLoop ( Timer . java : 552 )
--
< span style = "color: #ff6600;" > "Timer-450" daemon prio = 10 tid = 0x00007f39d0728800 nid = 0x160 in Object . wait ( ) [ 0x00007f39b1312000 ]
java . lang . Thread . State : TIMED_WAITING ( on object monitor )
at java . lang . Object . wait ( Native Method )
at java . util . TimerThread . mainLoop ( Timer . java : 552 )
- locked < 0x00000007bddf8788 > ( a java . util . TaskQueue )
at java . util . TimerThread . run ( Timer . java : 505 )
< / span >
"Timer-449" daemon prio = 10 tid = 0x00007f39ec01f000 nid = 0xffc7 in Object . wait ( ) [ 0x00007f39af5f5000 ]
java . lang . Thread . State : TIMED_WAITING ( on object monitor )
at java . lang . Object . wait ( Native Method )
at java . util . TimerThread . mainLoop ( Timer . java : 552 )

 

参考资料:

​​http://scau-fly.iteye.com/blog/1884606​​

​​http://www.blogjava.net/hankchen/archive/2012/05/09/377735.html​​

 


举报

相关推荐

0 条评论