My application uses JBoss 3.2.6 running Tomcat 5.5 on Debian Linux using the 2.4 kernel. I have not specified the connectionTimeout attribute on the AJP connector between Apache and Tomcat running within JBoss - with the idea that the connections get reused between web requests. 99% of the requests that come into this application are stateless. I notice that the number of Tomcat threads that are being used to KeepAlive the connections between Apache and Tomcat is much higher than the concurrent number of requests coming into Apache. It looks like the connection between Apache and Tomcat is marked as busy and hence Apache picks a new connection to Tomcat and hence ties up a new thread within the Tomcat pool - which over a period of time results in exhaustion of all Tomcat threads. I am thinking of applying connectionTimeouts in order to force these threads to give up Apache connections and restablish new ones- but was wondering why Tomcat holds onto these threads instead of using them for the subsequent Apache requests.