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