我使用jstack获得具有最高cpu利用率的PID线程转储。它指向带有0x4974的线程。100%cpu利用率需要帮助分析线程转储
“VM线程” PRIO = 10 TID = 0x00007ffc60068800 NID = 0x4974可运行 “VM 周期性任务线程” PRIO = 10 TID = 0x00007ffc60098000 NID = 0x497b 条件JNI等待全局引用:1182
由于它没有线程的状态和正在执行的代码,与我在网络上看到的示例线程转储不同,所以我在分析过程中遇到了问题。是否有任何免费软件,最好在线,可以分析.txt
线程转储文件?
感谢那些回复。好的,我可以学习如何使用武士,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%并重置后上传了线程转储。我还包括我使用的工具(武士,tda和ibm线程和显示器转储分析器) http://www.mediafire.com/?901mduvodm97d8v,x72cdixp8fltabu,fhfw4e50c7fzu4t,1oq2npaxmtxz0dq,i0u997fhvxfagd3,cdewe4de6x3rhe4,w2ndwqw2ekwixkd,qsbst5ow6f59p75,9fx8w8qpfdhjmyx,levpqppb3ouh71q
我会使用visualvm加载线程转储并分析它。 –
您可以发布整个线程转储吗?这将提供更多的线索,因为造成真正问题的原因。 – CuriousMind
如果我发布整个线程转储,它真的会好吗?它相当长。 – user2939830