users@glassfish.java.net

Re: PWC5750: All threads (200) are currently busy, waiting.

From: Jeanfrancois Arcand <Jeanfrancois.Arcand_at_Sun.COM>
Date: Wed, 25 Jun 2008 10:44:37 -0400

Salut,

glassfish_at_javadesktop.org wrote:
> I'm running Glassfish v2ur2 on Java 1.6.0_06 (amd64) and RHEL 5.1 with the AJP connector enabled. After some time the AJP connector stops responding. In the server.log I can see the following message:
>
> [#|2008-06-22T23:01:28.646+0200|SEVERE|sun-appserver9.1|org.apache.tomcat.util.threads.ThreadPool|_ThreadID=48;_ThreadName=TP-Processor4;_RequestID=06ca9d8f-f987-4ab3-8a3e-038
> 5aaf919fc;|PWC5750: All threads (200) are currently busy, waiting. Increase http-listener attribute acceptor-threads (200) or check the servlet status|#]
>
> Initially I thought there was some kind of deadlock in my code. After generating a thread dump and examining the jvm.log file I got this:
>
> &quot;TP-Processor200&quot; daemon prio=10 tid=0x00002aab0d943000 nid=0x4c63 runnable [0x0000000042cc5000..0x0000000042cc5a10]
> java.lang.Thread.State: 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)
> - locked &lt;0x00002aaae5e16918&gt; (a java.io.BufferedInputStream)
> at org.apache.jk.common.ChannelSocket.read(ChannelSocket.java:626)
> at org.apache.jk.common.ChannelSocket.receive(ChannelSocket.java:564)
> at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:691)
> at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:895)
> at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:666)
> at java.lang.Thread.run(Thread.java:619)
>
> &quot;TP-Processor199&quot; daemon prio=10 tid=0x00002aab0d8dc400 nid=0x4c62 runnable [0x0000000042ca4000..0x0000000042ca4d90]
> java.lang.Thread.State: 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)
> - locked &lt;0x00002aaae5e2ffa8&gt; (a java.io.BufferedInputStream)
> at org.apache.jk.common.ChannelSocket.read(ChannelSocket.java:626)
> at org.apache.jk.common.ChannelSocket.receive(ChannelSocket.java:564)
> at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:691)
> at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:895)
> at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:666)
> at java.lang.Thread.run(Thread.java:619)
>
> and so on. All 200 TP-Processor threads have the same stack trace and are blocking reading a socket. I presume this is the socket used for AJP communication, so I don't understand why those threads were not considered "free" and could not be used for handling requests.

It looks quite strange. Does Apache still dispatch properly request to
GlassFish?

Thanks

-- Jeanfrancois



>
> Any hints?
> [Message sent by forum member 'lbschenkel' (lbschenkel)]
>
> http://forums.java.net/jive/thread.jspa?messageID=282167
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_glassfish.dev.java.net
> For additional commands, e-mail: users-help_at_glassfish.dev.java.net
>