我使用 jstack 来获取 CPU 利用率最高的 PID 的线程转储。它指向 nid 为 0x4974 的线程。
“VM 线程”prio=10 tid=0x00007ffc60068800 nid=0x4974 可运行“VM 定期任务线程”prio=10 tid=0x00007ffc60098000 nid=0x497b 等待条件 JNI 全局引用:1182
我在进行分析时遇到问题,因为它没有线程的状态以及正在执行的代码,这与我在网上看到的示例线程转储不同。是否有任何可以分析.txt
线程转储文件的最好在线免费软件?
感谢那些回复的人。好的,所以我能够学习如何使用 samurai、tda 和 ibm 线程转储工具。似乎问题在于正在创建的线程数、等待监视器的线程、锁定和阻塞。但我想知道你们是否有额外的投入。这是我从 TDA 得到的:
当它处于 100% cpu 利用率时
Overall Thread Count 1001
Overall Monitor Count 644
Number of threads waiting for a monitor 50
Number of threads locking a monitor 636
Number of threads sleeping on a monitor 0
Number of deadlocks 0
Number of Monitors without locking threads 0
我重置后
Overall Thread Count 32
Overall Monitor Count 13
Number of threads waiting for a monitor 0
Number of threads locking a monitor 13
Number of threads sleeping on a monitor 13
Number of deadlocks 0
Number of Monitors without locking threads 0
40% 的线程在监视器上休眠。
这可能表明他们正在等待一些过载或不可用的外部资源(例如数据库),或者只是在等待做某事(空闲线程)。您应该使用排除所有空闲线程的过滤器检查睡眠线程。
我们只有大约 60 个客户。
我在 cpu 利用率为 100% 且重置后上传了线程转储。I also included the tools that i used (samurai,tda,and ibm thread and monitor dump analyzer) http://www.mediafire.com/?901mduvodm97d8v,x72cdixp8fltabu,fhfw4e50c7fzu4t,1oq2npaxmtxz0dq,i0u997fhvxfagd3,cdewe4de6x3rhe4,w2ndwqw2ekwixkd,qsbst5ow6f59p75,9fx8w8qpfdhjmyx, levpqppb3ouh71q