Since I did not get any responses to this, just wanted to ask - did I post this 
to the wrong list and should I be posting this to the tomcat developers list 
instead?


-----Original Message-----
From: Pantvaidya, Vishwajit [mailto:vpant...@selectica.com] 
Sent: Thursday, May 14, 2009 11:29 AM
To: Tomcat Users List
Subject: RE: Running out of tomcat threads - why many threads in RUNNABLE stage 
even with no activity

I set connectionTimeout in server.xml to 600000 and now the RUNNABLE threads go 
back to WAITING stage after that time.

But our other servers which are running the same configuration, same webapp and 
do not have connectionTimeout set in server.xml, do not show so many RUNNABLE 
threads, but more WAITING threads. So looks like the threads are getting 
recycled properly there.


Any idea why could this be? Could it be the OS (all servers run Linux but I do 
not know which flavors/versions)?



-----Original Message-----
From: Pantvaidya, Vishwajit [mailto:vpant...@selectica.com] 
Sent: Wednesday, May 13, 2009 2:28 PM
To: users@tomcat.apache.org
Subject: Running out of tomcat threads - why many threads in RUNNABLE stage 
even with no activity

My setup is tomcat 5.5.17 + mod_jk 1.2.15 + httpd 2.2.2. I am using AJP1.3.
Every 2-3 days with no major load, tomcat throws the error: "SEVERE: All 
threads (200) are currently busy, waiting..."

I have been monitoring my tomcat TP-Processor thread behavior over extended 
time intervals and observe that:
- even when there is no activity on the server, several TP-Processor threads 
are in RUNNABLE state while few are in WAITING state
- RUNNABLE threads stack trace shows "java.lang.Thread.State: RUNNABLE at 
java.net.SocketInputStream.socketRead0(Native Method)..."
- WAITING thread stack trace shows "java.lang.Thread.State: WAITING on 
org.apache.tomcat.util.threads.threadpool$controlrunna...@53533c55"
- tomcat adds 4 new TP-Processor threads when a request comes in and it can 
find no WAITING threads

So I conclude that my tomcat is running out of threads due to many threads 
being in RUNNABLE state when actually they should be in WAITING state. Is that 
happening because of the socket_keepalive in my workers.properties shown below?
Why are threads added in bunches of 4 - is there any way to configure this?

My workers config is:

Worker...type=ajp13
Worker...cachesize=10
Worker...cache_timeout=600
Worker...socket_keepalive=1
Worker...recycle_timeout=300
 
Earlier posts related to this issue on the list seem to recommend tweaking:
- several timeouts
- JkOptions +DisableReuse

I am planning to do the following to resolve our problem:
- upgrade jk to latest version - e.g. 1.2.28
- replace recycle_timeout with connection_pool_timeout
- add connectionTimeout in server.xml
- add JkOptions +DisableReuse

Please let me know if this is okay or suggestions if any.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to