如何在java Web应用程序中找到无限循环?
有一天,我们的
Java Web应用程序的CPU使用率达到100%.
重启解决了事件但不是问题,因为问题回来几个小时后. 我们怀疑新版本引入了无限循环,但我们没有对代码或服务器进行任何更改. 我们设法通过使用kill -QUIT进行多次线程转储并查看和比较每个线程详细信息来找到问题. 分析Web应用程序的几个线程转储非常繁琐. 那么您是否知道在生产环境中找到此类问题的更好方法或工具? 解决方法
经过一些询问后,我在
Monitoring and Managing Java SE 6 Platform Applications找到了答案:
您可以使用JDK提供的名为JTop的工具来诊断循环线程,该工具将显示每个线程使用的CPU时间: 使用线程名称,您可以通过使用kill -QUIT进行线程转储,在“线程”选项卡中找到此线程的堆栈跟踪. 您现在可以专注于导致无限循环的代码. PS.:根据http://blog.stackoverflow.com/2008/07/stack-overflow-private-beta-begins/回答我自己的问题似乎没问题: PS.:如果sun.com域名将不再存在: $<JDK>/bin/java -jar <JDK>/demo/management/JTop/JTop.jar 或者,您可以将其作为JConsole插件运行: $<JDK>/bin/jconsole -pluginpath <JDK>/demo/management/JTop/JTop.jar (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |