【发布时间】:2011-07-19 20:16:30
【问题描述】:
来自基于 java 的应用程序的线程转储很容易获得但很难分析!
我们可以从线程转储中看到一些有趣的东西。
假设我们在一个负载很重的 java web 应用程序中。而且我经常在高峰时间(在高负载下)使用 10 或 15 个线程转储文件来制作宽数据。所以首先,毫无疑问,我们需要调整状态为 Blocked 和 Monitor 的代码。其余的 Runnable 线程我无法深入研究。
那么,如果“方法”多次出现在线程转储中,我们可以说它在高负载服务器端比另一个慢或快吗?当然,我们可以使用更多的分析工具来检查,但是线程转储可能会给我们同样有用的信息,尤其是我们在生产环境中。
谢谢你的建议!
万斯
【问题讨论】:
-
等等..什么?!你的问题到底是什么?
-
我的问题是,我们有时可能会“忽略”线程转储中的“可运行”状态。你认为它们的真正含义是什么?它们只是在运行状态下真的“正常”,还是我们可以从中看到一些性能问题?很抱歉我发布的误解问题。
-
我建议你关注堆栈跟踪发生变化的线程。对于那些有静态堆栈跟踪的人来说,他们很可能什么也没做。
-
理想情况下,您会在生产环境或类似生产环境中使用分析器。这需要大量的猜测才能解决问题。
-
谢谢!由于线程转储的开销低于分析器,因此这是我在调查性能问题时的首选。
标签: java analysis performance