编程语言
首页 > 编程语言> > java – Tomcat Web应用程序线程转储

java – Tomcat Web应用程序线程转储

作者:互联网

我有一个在Tomcat中运行的生产Web应用程序(Struts,iBatis,Hibernate),它会在运行6 – 7天后处理请求时挂起但在执行线程转储后会再次运行.

我很难搞清楚为什么会这样.

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

解决方法:

也许这可以帮助您找到问题的原因.

我在tomcat上启用了JMX
(在启动tomcat时设置这些可选的vm参数)
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port = 30188(你希望jmx为tc运行的任何端口)
-Dcom.sun.management.jmxremote.ssl = FALSE
-Dcom.sun.management.jmxremote.authenticate = FALSE

然后我编写了一个监视内存使用情况的小应用程序(通过jmx)并通知我内存使用情况是否超过80%.

一旦出现问题,我就会知道.然后我将获得内存中对象的直方图(有关如何获取该内容,请参阅http://java.sun.com/javase/6/docs/technotes/tools/share/jmap.html).

结果发现我的一个ejbQL查询导致了大量的内存使用.

希望它可能在某种程度上有所帮助……

标签:java,tomcat,performance,thread-dump
来源: https://codeday.me/bug/20190701/1343520.html