Thread locked in DataServicesMessaging Gateway?
aaron.winkler May 26, 2010 10:32 AMHello, I'd love to hear any and all thoughts, comments, and/or suggestions.
We are using the DataServicesMessaging Gateway to support some chat-like functionality from a Flex Frontend. We are using polling, not long-polling, and poll the server every 3 to 5 seconds depending on the consumer. Our server is configured to a max of 35 Jrun Threads and 50 Event Gateway threads. Most of our requests last less than a second, but every so often we have requests that will last anywhere from 50 to 200 seconds. (not Milliseconds). Looking at that stacktrace on those always shows the following:
Full thread dump Java HotSpot(TM) 64-Bit Server VM (10.0-b19):"jrpp-390" runnable
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:258)
at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
at jrun.servlet.jrpp.ProxyEndpoint.readFully(ProxyEndpoint.java:581)
at jrun.servlet.jrpp.ProxyEndpoint.readFully(ProxyEndpoint.java:573)
at jrun.servlet.jrpp.ProxyEndpoint.readInt(ProxyEndpoint.java:591)
at jrun.servlet.jrpp.JrppInputStream.read(JrppInputStream.java:79)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
at jrun.servlet.ServletIn.read(ServletIn.java:42)
at java.io.FilterInputStream.read(FilterInputStream.java:66)
at java.io.FilterInputStream.read(FilterInputStream.java:66)
at java.io.DataInputStream.readByte(DataInputStream.java:248)
at flex.messaging.io.amf.Amf3Input.readUInt29(Amf3Input.java:634)
at flex.messaging.io.amf.Amf3Input.readString(Amf3Input.java:228)
at flex.messaging.io.amf.Amf3Input.readObjectValue(Amf3Input.java:142)
at flex.messaging.io.amf.Amf3Input.readObject(Amf3Input.java:128)
at flex.messaging.io.amf.Amf3Input.readScriptObject(Amf3Input.java:437)
at flex.messaging.io.amf.Amf3Input.readObjectValue(Amf3Input.java:149)
at flex.messaging.io.amf.Amf3Input.readObject(Amf3Input.java:128)
at flex.messaging.io.amf.Amf0Input.readObjectValue(Amf0Input.java:128)
at flex.messaging.io.amf.Amf0Input.readArrayValue(Amf0Input.java:319)
at flex.messaging.io.amf.Amf0Input.readObjectValue(Amf0Input.java:132)
at flex.messaging.io.amf.Amf0Input.readObject(Amf0Input.java:88)
at flex.messaging.io.amf.AmfMessageDeserializer.readBody(AmfMessageDeserializer.java:206)
at flex.messaging.io.amf.AmfMessageDeserializer.readMessage(AmfMessageDeserializer.java:130)
at flex.messaging.endpoints.amf.SerializationFilter.invoke(SerializationFilter.java:113)
at flex.messaging.endpoints.AMFEndpoint.service(AMFEndpoint.java:122)
at flex.messaging.MessageBrokerServlet.service(MessageBrokerServlet.java:438)
at coldfusion.flex.ColdFusionMessageBrokerServlet.service(ColdFusionMessageBrokerServlet.jav a:50)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89)
at jrun.servlet.FilterChain.doFilter(FilterChain.java:86)
at coldfusion.filter.FlashRequestControlFilter.doFilter(FlashRequestControlFilter.java:71)
at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
at com.seefusion.Filter.doFilter(Filter.java:49)
at com.seefusion.SeeFusion.doFilter(SeeFusion.java:1500)
at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
at jrun.servlet.FilterChain.service(FilterChain.java:101)
at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106)
at jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42)
at jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:286)
at jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543)
at jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:203)
at jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:428)
at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)
it looks like I'm waiting to read a message coming in off the stream, but I am not sure why or how this happens. I look forward to see what folks say on this one.
Aaron
