0 0

resin线程跑满 帮忙分析一下线程死锁的问题10

最近resin运行一段时间后就会特别慢,甚至假死,通过jstack打印后发现resin中的线程有1000多个,http请求只有一个是RUNNABLE 其它的都是WAIT 大家帮忙分析一下啊,线程信息在附件中,谢谢!

问题补充:不知道大家能不能看到附件 下面是部分线程信息
"http--9005-42150$342045458" daemon prio=10 tid=0x000000005c836800 nid=0x5664 waiting for monitor entry [0x0000000046389000]
   java.lang.Thread.State: BLOCKED (on object monitor)
at com.caucho.jsp.PageManager.getPage(PageManager.java:219)
- waiting to lock <0x00000007a2ee94a8> (a com.caucho.jsp.PageManager$Entry)
at com.caucho.jsp.PageManager.getPage(PageManager.java:178)
at com.caucho.jsp.PageManager.getPage(PageManager.java:161)
at com.caucho.jsp.QServlet.getSubPage(QServlet.java:301)
at com.caucho.jsp.QServlet.getPage(QServlet.java:210)
at com.caucho.server.dispatch.PageFilterChain.compilePage(PageFilterChain.java:238)
at com.caucho.server.dispatch.PageFilterChain.doFilter(PageFilterChain.java:145)
at com.sohu.mobile.filter.CommonFilter.doFilter(CommonFilter.java:65)
at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87)
at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:187)
at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:265)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:273)
at com.caucho.server.port.TcpConnection.run(TcpConnection.java:682)
- locked <0x00000007c00a2530> (a java.lang.Object)
at com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:730)
at com.caucho.util.ThreadPool$Item.run(ThreadPool.java:649)
at java.lang.Thread.run(Thread.java:662)

   Locked ownable synchronizers:
- None

"http--9005-42152$2091773234" daemon prio=10 tid=0x000000005c835000 nid=0x5663 waiting for monitor entry [0x0000000046368000]
   java.lang.Thread.State: BLOCKED (on object monitor)
at com.caucho.jsp.PageManager.getPage(PageManager.java:219)
- waiting to lock <0x00000007a2ee9368> (a com.caucho.jsp.PageManager$Entry)
at com.caucho.jsp.PageManager.getPage(PageManager.java:178)
at com.caucho.jsp.PageManager.getPage(PageManager.java:161)
at com.caucho.jsp.QServlet.getSubPage(QServlet.java:301)
at com.caucho.jsp.QServlet.getPage(QServlet.java:210)
at com.caucho.server.dispatch.PageFilterChain.compilePage(PageFilterChain.java:238)
at com.caucho.server.dispatch.PageFilterChain.doFilter(PageFilterChain.java:145)
at com.caucho.server.webapp.DispatchFilterChain.doFilter(DispatchFilterChain.java:97)
at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:265)
at com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:293)
at com.caucho.server.webapp.RequestDispatcherImpl.error(RequestDispatcherImpl.java:118)
at com.caucho.server.webapp.ErrorPageManager.sendServletError(ErrorPageManager.java:367)
at com.caucho.server.webapp.ErrorPageManager.handleErrorStatus(ErrorPageManager.java:618)
at com.caucho.server.webapp.ErrorPageManager.handleErrorStatus(ErrorPageManager.java:586)
at com.caucho.server.webapp.ErrorPageManager.sendError(ErrorPageManager.java:495)
at com.caucho.server.connection.AbstractHttpResponse.sendError(AbstractHttpResponse.java:523)
at com.caucho.server.connection.AbstractHttpResponse.sendError(AbstractHttpResponse.java:477)
at com.caucho.server.dispatch.PageFilterChain.doFilter(PageFilterChain.java:185)
at com.sohu.mobile.filter.CommonFilter.doFilter(CommonFilter.java:65)
at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87)
at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:187)
at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:265)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:273)
at com.caucho.server.port.TcpConnection.run(TcpConnection.java:682)
- locked <0x00000007c017c4b0> (a java.lang.Object)
at com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:730)
at com.caucho.util.ThreadPool$Item.run(ThreadPool.java:649)
at java.lang.Thread.run(Thread.java:662)

   Locked ownable synchronizers:
- None

"http--9005-41806$367002811" daemon prio=10 tid=0x000000005c833800 nid=0x5662 runnable [0x0000000046346000]
   java.lang.Thread.State: RUNNABLE
at com.caucho.loader.EnvironmentClassLoader.addListener(EnvironmentClassLoader.java:260)
- locked <0x00000007a1a3dca0> (a java.util.ArrayList)
at com.caucho.loader.EnvironmentClassLoader.initListeners(EnvironmentClassLoader.java:286)
at com.caucho.loader.EnvironmentClassLoader.<init>(EnvironmentClassLoader.java:137)
at com.caucho.loader.EnvironmentClassLoader.<init>(EnvironmentClassLoader.java:106)
at com.caucho.jsp.JspCompiler.<init>(JspCompiler.java:97)
at com.caucho.jsp.JspManager.compile(JspManager.java:209)
at com.caucho.jsp.JspManager.createPage(JspManager.java:171)
at com.caucho.jsp.JspManager.createPage(JspManager.java:150)
at com.caucho.jsp.PageManager.getPage(PageManager.java:248)
- locked <0x00000007a2ee94c8> (a com.caucho.jsp.PageManager$Entry)
at com.caucho.jsp.PageManager.getPage(PageManager.java:178)
at com.caucho.jsp.PageManager.getPage(PageManager.java:161)
at com.caucho.jsp.QServlet.getSubPage(QServlet.java:301)
at com.caucho.jsp.QServlet.getPage(QServlet.java:210)
at com.caucho.server.dispatch.PageFilterChain.compilePage(PageFilterChain.java:238)
at com.caucho.server.dispatch.PageFilterChain.doFilter(PageFilterChain.java:145)
at com.caucho.server.webapp.DispatchFilterChain.doFilter(DispatchFilterChain.java:97)
at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:265)
at com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:293)
at com.caucho.server.webapp.RequestDispatcherImpl.error(RequestDispatcherImpl.java:118)
at com.caucho.server.webapp.ErrorPageManager.handleErrorStatus(ErrorPageManager.java:614)
at com.caucho.server.webapp.ErrorPageManager.handleErrorStatus(ErrorPageManager.java:586)
at com.caucho.server.webapp.ErrorPageManager.sendError(ErrorPageManager.java:495)
at com.caucho.server.connection.AbstractHttpResponse.sendError(AbstractHttpResponse.java:523)
at com.caucho.server.connection.AbstractHttpResponse.sendError(AbstractHttpResponse.java:477)
at com.caucho.server.dispatch.PageFilterChain.doFilter(PageFilterChain.java:185)
at com.sohu.mobile.filter.CommonFilter.doFilter(CommonFilter.java:65)
at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87)
at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:187)
at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:265)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:273)
at com.caucho.server.port.TcpConnection.run(TcpConnection.java:682)
- locked <0x00000007bdf5ba68> (a java.lang.Object)
at com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:730)
at com.caucho.util.ThreadPool$Item.run(ThreadPool.java:649)
at java.lang.Thread.run(Thread.java:662)

   Locked ownable synchronizers:
- None

"http--9005-40683$1525065659" daemon prio=10 tid=0x000000005c832000 nid=0x5661 waiting for monitor entry [0x0000000046305000]
   java.lang.Thread.State: BLOCKED (on object monitor)
at com.caucho.jsp.PageManager.getPage(PageManager.java:219)
- waiting to lock <0x00000007a2ee94c8> (a com.caucho.jsp.PageManager$Entry)
at com.caucho.jsp.PageManager.getPage(PageManager.java:178)
at com.caucho.jsp.PageManager.getPage(PageManager.java:161)
at com.caucho.jsp.QServlet.getSubPage(QServlet.java:301)
at com.caucho.jsp.QServlet.getPage(QServlet.java:210)
at com.caucho.server.dispatch.PageFilterChain.compilePage(PageFilterChain.java:238)
at com.caucho.server.dispatch.PageFilterChain.doFilter(PageFilterChain.java:145)
at com.caucho.server.webapp.DispatchFilterChain.doFilter(DispatchFilterChain.java:97)
at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:265)
at com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:293)
at com.caucho.server.webapp.RequestDispatcherImpl.error(RequestDispatcherImpl.java:118)
at com.caucho.server.webapp.ErrorPageManager.handleErrorStatus(ErrorPageManager.java:614)
at com.caucho.server.webapp.ErrorPageManager.handleErrorStatus(ErrorPageManager.java:586)
at com.caucho.server.webapp.ErrorPageManager.sendError(ErrorPageManager.java:495)
at com.caucho.server.connection.AbstractHttpResponse.sendError(AbstractHttpResponse.java:523)
at com.caucho.server.connection.AbstractHttpResponse.sendError(AbstractHttpResponse.java:477)
at com.caucho.server.dispatch.PageFilterChain.doFilter(PageFilterChain.java:185)
at com.sohu.mobile.filter.CommonFilter.doFilter(CommonFilter.java:65)
at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87)
at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:187)
at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:265)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:273)
at com.caucho.server.port.TcpConnection.run(TcpConnection.java:682)
- locked <0x00000007b9713be0> (a java.lang.Object)
at com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:730)
at com.caucho.util.ThreadPool$Item.run(ThreadPool.java:649)
at java.lang.Thread.run(Thread.java:662)

   Locked ownable synchronizers:
- None

问题补充:RUNABLE的线程locked <0x00000007a2ee94c8> (a com.caucho.jsp.PageManager$Entry)

有200多个WAIT的线程都在等待这个对象
"http--9005-40683$1525065659" daemon prio=10 tid=0x000000005c832000 nid=0x5661 waiting for monitor entry [0x0000000046305000]
   java.lang.Thread.State: BLOCKED (on object monitor)
at com.caucho.jsp.PageManager.getPage(PageManager.java:219)
- waiting to lock <0x00000007a2ee94c8> (a com.caucho.jsp.PageManager$Entry)
at com.caucho.jsp.PageManager.getPage(PageManager.java:178)
at com.caucho.jsp.PageManager.getPage(PageManager.java:161)
at com.caucho.jsp.QServlet.getSubPage(QServlet.java:301)
at com.caucho.jsp.QServlet.getPage(QServlet.java:210)
at com.caucho.server.dispatch.PageFilterChain.compilePage(PageFilterChain.java:238)
at com.caucho.server.dispatch.PageFilterChain.doFilter(PageFilterChain.java:145)
at com.caucho.server.webapp.DispatchFilterChain.doFilter(DispatchFilterChain.java:97)
at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:265)
at com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:293)
at com.caucho.server.webapp.RequestDispatcherImpl.error(RequestDispatcherImpl.java:118)
at com.caucho.server.webapp.ErrorPageManager.handleErrorStatus(ErrorPageManager.java:614)
at com.caucho.server.webapp.ErrorPageManager.handleErrorStatus(ErrorPageManager.java:586)
at com.caucho.server.webapp.ErrorPageManager.sendError(ErrorPageManager.java:495)
at com.caucho.server.connection.AbstractHttpResponse.sendError(AbstractHttpResponse.java:523)
at com.caucho.server.connection.AbstractHttpResponse.sendError(AbstractHttpResponse.java:477)
at com.caucho.server.dispatch.PageFilterChain.doFilter(PageFilterChain.java:185)
at com.sohu.mobile.filter.CommonFilter.doFilter(CommonFilter.java:65)
at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87)
at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:187)
at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:265)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:273)
at com.caucho.server.port.TcpConnection.run(TcpConnection.java:682)
- locked <0x00000007b9713be0> (a java.lang.Object)
at com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:730)
at com.caucho.util.ThreadPool$Item.run(ThreadPool.java:649)
at java.lang.Thread.run(Thread.java:662)

   Locked ownable synchronizers:
- None

问题补充:大部分线程都死在waiting to lock <0x00000007a2ee94c8> (a com.caucho.jsp.PageManager$Entry)这个地方,这个地方被唯一的一个RUNNABLE的线程给占有了,而且 PageManager是WEB容器resin本身的一个类
 
2014年5月19日 11:45

3个答案 按时间排序 按投票排序

0 0

引用

"http--9005-40683$1525065659" daemon prio=10 tid=0x000000005c832000 nid=0x5661 waiting for monitor entry [0x0000000046305000]
   java.lang.Thread.State: BLOCKED (on object monitor)
at com.caucho.jsp.PageManager.getPage(PageManager.java:219)
- waiting to lock <0x00000007a2ee94c8> (a com.caucho.jsp.PageManager$Entry)
at com.caucho.jsp.PageManager.getPage(PageManager.java:178)

通过上面这段看,waiting for monitor entry可能是你代码中使用了synchronized,这样如果你的PageManager方法如果没有执行完成时,其它的方法要获取同一个对象上的锁只能等待。
如果一般没有必要的话,可以把synchronized去掉。如果同为读的逻辑,不需要互斥。

2014年5月19日 12:44
0 0

上楼仁兄说的在理!你给一堆错误信息我们也只能靠猜!如果不是设计商业机密(贴下代码好点)

2014年5月19日 12:11
0 0

把你代码的:

com.caucho.jsp.PageManager.getPage(PageManager.java:219)

帖上来看看

2014年5月19日 12:08

相关推荐

Global site tag (gtag.js) - Google Analytics