首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Tomcat Web应用程序线程转储

Tomcat Web应用程序线程转储
EN

Stack Overflow用户
提问于 2010-02-17 16:21:46
回答 2查看 1.5K关注 0票数 4

我有一个在Tomcat中运行的生产web应用程序(Struts,iBatis,Hibernate),它会在运行6-7天后在服务请求时挂起,但在执行线程转储后又可以正常运行。

我很难弄清楚为什么会这样。

我只是想知道其他人是否遇到过类似的事情。

EN

回答 2

Stack Overflow用户

发布于 2010-06-07 20:22:51

也许这会帮助你找到问题的原因。

我已经在tomcat上启用了JMX (在启动tomcat时设置这些可选的vm参数) -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=30188 (无论您希望jmx在哪个端口上运行-Dcom.sun.management.jmxremote.ssl=false tc) -Dcom.sun.management.jmxremote.ssl=false jmx

然后,我编写了一个小应用程序来监控内存使用情况(通过jmx),并在内存使用超过80%时通知我。

一旦有什么地方开始出错,我就会知道。然后我将获得内存中对象的直方图(有关如何获取直方图的信息,请参阅http://java.sun.com/javase/6/docs/technotes/tools/share/jmap.html )。

最后,我发现我的一个ejbQL查询导致了大量内存被使用。

希望这能在某种程度上有所帮助......

票数 2
EN

Stack Overflow用户

发布于 2010-02-17 16:29:20

首先,尝试在测试环境中重现这一点。您可以使用JMeter对应用程序进行压力测试。您可以使用-verbose:gc-XX:+PrintGCDetails启动tomcat,这将使您更深入地了解GC运行时发生的情况。然后,当站点没有响应时,您可以获得线程转储,如果这解除了站点的阻塞,请查看GC详细信息以获取更多信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2279190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档