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