挂起Java Web App的故障排除

时间:2011-07-05 18:02:26

标签: multithreading performance

我有一个在高负载下挂起的Web应用程序。我不打算详细介绍代码,因为我真的只想要一些故障排除建议和工具建议。

这是一个网络应用,所以每个请求都是一个线程。在高负载测试下,应用程序开始消耗所有cpu,同时变得没有响应。我怀疑请求线程挂在我们正在测试的新代码中。由于cpu消耗的事实,我假设这必须在我的应用程序端。我的理解可能是错误的,总CPU消耗表明我的第一次故障排除工作应该是查看消耗这些周期的代码。

有哪些工具和/或方法可用于检查哪些线程挂起以及哪些代码行?同样,我可以轻松地强制应用程序进入有问题的行为。

我发现并一直在尝试使用visualvm。似乎是完美的工具。仍然愿意接受建议。我看了eclipse TPTP,它似乎是生命终结,同时需要更重的部署。

2 个答案:

答案 0 :(得分:0)

您可以在启动线程和关闭线程时插入日志消息。然后启动应用程序并在穿透代码时检查输出。

另一种方法是寻找内存泄漏。如果您确定没有,则可以扩展JVM的虚拟内存。

答案 1 :(得分:0)

@chad:你有整个图片的数据库......你可能想从查看DB端发生的事情开始......你可以很好地研究数据库锁,当前会话等。