Aaron Long
2013-11-11 15:22:44 UTC
This is our second attempt at using events-push plugin and we keep seeing
the same issue each time. Last time we thought it was because we weren't
using NIO, but now we are setup with NIO connector and using SSE protocol.
We eventually end up with a dead server and hundreds of threads like this:
"http-nio-8080-exec-80" daemon prio=10 tid=0x00007f0830051800 nid=0x2cc1
waiting on condition [0x00007f079b4f0000] java.lang.Thread.State:
WAITING (parking) at sun.misc.Unsafe.park(Native Method) -
parking to wait for <0x00000006372e0460> (a
java.util.concurrent.CountDownLatch$Sync) at
java.util.concurrent.locks.LockSupport.park(LockSupport.java:186) at
java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:834)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:994)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1303)
at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:236)
at
org.atmosphere.container.BlockingIOCometSupport.suspend(BlockingIOCometSupport.java:153)
at
org.atmosphere.container.BlockingIOCometSupport.service(BlockingIOCometSupport.java:103)
at
org.atmosphere.container.Tomcat7BIOSupportWithWebSocket.doService(Tomcat7BIOSupportWithWebSocket.java:65)
at
org.atmosphere.container.TomcatWebSocketUtil.doService(TomcatWebSocketUtil.java:84)
at
org.atmosphere.container.Tomcat7BIOSupportWithWebSocket.service(Tomcat7BIOSupportWithWebSocket.java:61)
at
org.atmosphere.cpr.AtmosphereFramework.doCometSupport(AtmosphereFramework.java:1370)
at
org.atmosphere.cpr.AtmosphereServlet.doPost(AtmosphereServlet.java:286)
at org.atmosphere.cpr.AtmosphereServlet.doGet(AtmosphereServlet.java:272)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at
org.codehaus.groovy.grails.web.mapping.filter.UrlMappingsFilter.processFilterChain(UrlMappingsFilter.java:377)
at
org.codehaus.groovy.grails.web.mapping.filter.UrlMappingsFilter.doFilterInternal(UrlMappingsFilter.java:244)
at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at
org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.doFilter(GrailsPageFilter.java:139)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:369)
-Aaron
the same issue each time. Last time we thought it was because we weren't
using NIO, but now we are setup with NIO connector and using SSE protocol.
We eventually end up with a dead server and hundreds of threads like this:
"http-nio-8080-exec-80" daemon prio=10 tid=0x00007f0830051800 nid=0x2cc1
waiting on condition [0x00007f079b4f0000] java.lang.Thread.State:
WAITING (parking) at sun.misc.Unsafe.park(Native Method) -
parking to wait for <0x00000006372e0460> (a
java.util.concurrent.CountDownLatch$Sync) at
java.util.concurrent.locks.LockSupport.park(LockSupport.java:186) at
java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:834)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:994)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1303)
at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:236)
at
org.atmosphere.container.BlockingIOCometSupport.suspend(BlockingIOCometSupport.java:153)
at
org.atmosphere.container.BlockingIOCometSupport.service(BlockingIOCometSupport.java:103)
at
org.atmosphere.container.Tomcat7BIOSupportWithWebSocket.doService(Tomcat7BIOSupportWithWebSocket.java:65)
at
org.atmosphere.container.TomcatWebSocketUtil.doService(TomcatWebSocketUtil.java:84)
at
org.atmosphere.container.Tomcat7BIOSupportWithWebSocket.service(Tomcat7BIOSupportWithWebSocket.java:61)
at
org.atmosphere.cpr.AtmosphereFramework.doCometSupport(AtmosphereFramework.java:1370)
at
org.atmosphere.cpr.AtmosphereServlet.doPost(AtmosphereServlet.java:286)
at org.atmosphere.cpr.AtmosphereServlet.doGet(AtmosphereServlet.java:272)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at
org.codehaus.groovy.grails.web.mapping.filter.UrlMappingsFilter.processFilterChain(UrlMappingsFilter.java:377)
at
org.codehaus.groovy.grails.web.mapping.filter.UrlMappingsFilter.doFilterInternal(UrlMappingsFilter.java:244)
at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at
org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.doFilter(GrailsPageFilter.java:139)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:369)
-Aaron