Philip Wigg
2008-04-21 14:39:45 UTC
Hi,
I have several Tomcat web applications that run in separate JVMs. I
have one Apache instance that connects to the Tomcat instances via
mod_jk.
I am using:-
RHEL ES 4.0
Java 1.5.0_14
mod_jk-1.2.25-httpd-2.0.59.so
Tomcat 6.0.14.
Usually the sites work fine and are very responsive. The problem is
that I am intermittently seeing the following error in catalina.out:-
SEVERE: All threads (200) are currently busy, waiting. Increase
maxThreads (200) or check the servlet status
Tomcat never recovers from this needs to be restarted. The error does
seem to occur more often, but not exclusively, during periods of heavy
traffic. The thing is that I can see that even during very busy times
the number of busy threads does not normally exceed about 50. It seems
that sometimes the number of busy threads spikes very rapidly and the
system gets into some kind of state whereby threads are not released
for some reason and the system just runs out within about 10 minutes.
I tried increasing the maxThreads to 500, but it still ran out when
this problem occurred.
I am a sysadmin but the developers say that they don't think it is
related to code and that the three applications are different in the
way that they're written.
I have taken a thread dump after this problem occurs, and the threads
are all in the following state:-
"TP-Processor191" daemon prio=1 tid=0x0000002b698b8000 nid=0x3a39
runnable [0x000000004d727000..0x000000004d727bb0]
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:256)
at java.io.BufferedInputStream.read(BufferedInputStream.java:313)
- locked <0x0000002adf95e878> (a java.io.BufferedInputStream)
at org.apache.jk.common.ChannelSocket.read(ChannelSocket.java:620)
at org.apache.jk.common.ChannelSocket.receive(ChannelSocket.java:558)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:685)
at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:889)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
at java.lang.Thread.run(Thread.java:595)
I have a very simple workers.properties file which looks like so:-
worker.list=rt-worker,fs-worker,at-worker,tg-worker,gw-worker,gf-worker,pp-worker,bm-worker
worker.rt-worker.type=ajp13
worker.rt-worker.host=localhost
worker.rt-worker.port=8300
worker.fs-worker.type=ajp13
worker.fs-worker.host=localhost
worker.fs-worker.port=8301
[...] (other workers defined as above)
I was wondering if anyone had experienced similar issues or if anyone
could provide some guidance on how to investigate the cause. We've
tried to replicate the issue in our load-testing environment but we've
had no luck so far. Please let me know if there's any other
information you'd like me to provide.
Kind regards,
Philip Wigg.
---------------------------------------------------------------------
To start a new topic, e-mail: ***@tomcat.apache.org
To unsubscribe, e-mail: users-***@tomcat.apache.org
For additional commands, e-mail: users-***@tomcat.apache.org
I have several Tomcat web applications that run in separate JVMs. I
have one Apache instance that connects to the Tomcat instances via
mod_jk.
I am using:-
RHEL ES 4.0
Java 1.5.0_14
mod_jk-1.2.25-httpd-2.0.59.so
Tomcat 6.0.14.
Usually the sites work fine and are very responsive. The problem is
that I am intermittently seeing the following error in catalina.out:-
SEVERE: All threads (200) are currently busy, waiting. Increase
maxThreads (200) or check the servlet status
Tomcat never recovers from this needs to be restarted. The error does
seem to occur more often, but not exclusively, during periods of heavy
traffic. The thing is that I can see that even during very busy times
the number of busy threads does not normally exceed about 50. It seems
that sometimes the number of busy threads spikes very rapidly and the
system gets into some kind of state whereby threads are not released
for some reason and the system just runs out within about 10 minutes.
I tried increasing the maxThreads to 500, but it still ran out when
this problem occurred.
I am a sysadmin but the developers say that they don't think it is
related to code and that the three applications are different in the
way that they're written.
I have taken a thread dump after this problem occurs, and the threads
are all in the following state:-
"TP-Processor191" daemon prio=1 tid=0x0000002b698b8000 nid=0x3a39
runnable [0x000000004d727000..0x000000004d727bb0]
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:256)
at java.io.BufferedInputStream.read(BufferedInputStream.java:313)
- locked <0x0000002adf95e878> (a java.io.BufferedInputStream)
at org.apache.jk.common.ChannelSocket.read(ChannelSocket.java:620)
at org.apache.jk.common.ChannelSocket.receive(ChannelSocket.java:558)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:685)
at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:889)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
at java.lang.Thread.run(Thread.java:595)
I have a very simple workers.properties file which looks like so:-
worker.list=rt-worker,fs-worker,at-worker,tg-worker,gw-worker,gf-worker,pp-worker,bm-worker
worker.rt-worker.type=ajp13
worker.rt-worker.host=localhost
worker.rt-worker.port=8300
worker.fs-worker.type=ajp13
worker.fs-worker.host=localhost
worker.fs-worker.port=8301
[...] (other workers defined as above)
I was wondering if anyone had experienced similar issues or if anyone
could provide some guidance on how to investigate the cause. We've
tried to replicate the issue in our load-testing environment but we've
had no luck so far. Please let me know if there's any other
information you'd like me to provide.
Kind regards,
Philip Wigg.
---------------------------------------------------------------------
To start a new topic, e-mail: ***@tomcat.apache.org
To unsubscribe, e-mail: users-***@tomcat.apache.org
For additional commands, e-mail: users-***@tomcat.apache.org