如需对生产问题进行故障排除,您可能必须分析定期捕获的多个线程转储文件快照。每个线程快照中往往都会包含数百个线程,有时甚至会有数千线程。线程转储文件中的每个线程都可能会处于以下六种状态之一:
- NEW
- RUNNABLE
- WAITING
- TIMED_WAITING
- BLOCKED
- TERMINATED
为了分析线程转储文件,您必须对这些线程状态有一个正确的理解。在该视频https://blog.fastthread.io/2017/05/11/java-thread-states-explained-video-tutorial/中,我们对上述所有线程状态进行了详细说明。
如果您能够在一个简洁的视图中对所有线程转储文件快照中的一切线程状态进行可视化,那这一定能让您的故障排除工作更加轻松。
在 fastThread 对比总结报告的‘线程状态’中,您就能看到这样一个简洁的视图。
如何解读线程状态部分?
线程名称列
表格最左侧的列(即‘线程’列)中展示了线程的名称。有时线程名称会很长。
示例:
‘[ACTIVE]requestURI=/docRest/bean/com/buggycompany/catalog/AdditionalProductInfoServiceBean/service’.
在此类情形中,只有线程名称的前几个字母会在表格中输出。
示例:
‘‘[ACTIVE] requestURI=/docRest…’.
如需查看线程的完整名称,您可将鼠标悬浮在线程名称上。此时将弹出一个工具提示以提供完整的列名。
线程状态列
如果您上传了 5 个线程转储文件,则将在“线程名城”列旁看到 5 个线程转储文件列。在这些列中将提供有关线程状态的信息。

图:线程状态及其颜色
每个状态线程都有特定的颜色,如上所示。根据每个线程转储文件中的线程状态不同,表格中将会相应地打上颜色。鼠标悬停在单元格上时会弹出工具提示信息,说明线程的状态。
线程详情

图:线程搜索结果页
如果您想查看所有线程转储文件中的完整线程信息,可点击线程名称。。点击时,您将被重定向至包含线程搜索结果的新页面中。在本页中,您将能够看到线程的栈追踪信息、线程 NID、线程 ID、线程状态、此线程所持有的锁、此线程所等待的锁以及许多其他信息。
所有线程

图:表格下方的‘查看所有线程’超链接
在 fastThread 的‘比较摘要’页面中仅会展示 10 个线程状态。如果您想查看所有线程状态,则需要点击表格下方的‘查看所有线程 >>’超链接。点击后将打开一个新页面,其中将会展示各线程转储文件中的所有线程及其相应状态。
Leave a Reply