ARTIFACTORY:如何使用Java线程转储分析器分析线程转储

本·阿米先生
2023-01-22 11:07

线程转储允许您查看执行线程转储时Artifactory正在执行的操作的快照。如果您从事性能故障排除,这将非常有帮助。一个Java线程转储分析器(如fastThread)工具可以方便地读取、比较和分析多个线程转储。

Artifactory可以从其对象生成多个线程转储支持包,但是其他的选项也存在。无论如何实现,重要的是要确保在问题发生时生成线程转储。此外,如果线程转储的执行距离太近,可能会有太多的噪音,这将使您难以发现有用的信息。同样,执行它们的距离过远可能会导致您错过重要数据。为了获得有用的数据很好的经验法则是执行五(5)个连续的线程转储,每次间隔10秒。

之后,将文件上传到线程分析工具,例如fastThread,一个Java线程转储分析器。请注意,该工具可能需要一段时间来解析分析线程转储。完成后,您将获得一份对您的线程的分析总结,如下所示:

线程信息

  • 线程的名字:当使用Java.lang.Thread类生成线程时,该线程将被命名线程——(数量).当使用java.util.concurrent.ThreadFactory类,则该线程将被命名池——(数量)线程(数字)
  • 优先级:这表示Java线程的数字优先级。
  • 线程ID:这表示线程的唯一ID。这可以提供一些有用的信息,包括线程的CPU和/或内存使用情况。)
  • 线程状态:一个人类可读的字符串,描述线程的当前状态。
  • 线程Callstack:这表示线程的堆栈跟踪信息。

线程状态:

  • 新:这是一个已经创建的线程,但是还没有被处理。
  • 可运行:这表明线程正在占用CPU空间并处理任务。)它可能在等待状态取决于您的操作系统如何分配其资源。)2022世界杯阿根廷预选赛赛程
  • 屏蔽:这是一个等待其他线程释放其锁以获得监视器锁的线程。
  • 等待:这是一个正在等待的线程等待加入公园方法。
  • Timed_Waiting:这是一个正在等待的线程睡眠等待加入,或公园方法。(Waiting和Timed_Waiting的区别在于,Waiting无限期等待,而Timed_Waiting最多等待一个指定的等待时间)

注意:如果任何给定的线程转储对于线程分析器来说太大,那么以下Linux命令将用于按大小拆分文件:

分割-b <文件大小> <线程转储文件> <段文件>

例如:如果你有140 k命名为myfile然后执行以下命令:

分割-b 40k myfile段

这将输出四个40 kb文件:segmentaa, segmentab, segmentac和segmentad

可以获得有关分析Java线程转储的更多信息在这里