Hmmmm....

I just redid my tests with:

   BalancerMember ajp://localhost:8010 min=15 max=*50* smax=30 ttl=900
   keepalive=Off timeout=900

and

       <Connector port="8010"
                  minSpareThreads="15" maxSpareThreads="30"
   maxThreads="*51*" acceptCount="*0*"
                  tomcatAuthentication="false"
   useBodyEncodingForURI="true" URIEncoding="UTF-8"
                  enableLookups="false" redirectPort="8443"
   protocol="AJP/1.3" />

and

   ab -n 100 -c *50* http://jessh03l.ptcnet.ptc.com/TestApp/test.jsp?secs=3

I (after about 3 seconds) get

   SEVERE: All threads (51) are currently busy, waiting. Increase
   maxThreads (51) or check the servlet status

and I eventually get exactly 1 lost request. I'm baffled as to why this can occur.

Something's still doesn't seem quite right here.

What's even weirder is that I only get this issue with the first ab run after restarting Tomcat. If I do the same test again (any number of times) I don't lose any requests.

I can get the same result by restarting and doing 2 ab runs with "-n 100" in fairly short secession, so this isn't some ab error. By "fairly short", I don't mean very short -- I left a good 5 seconds between runs.

I find that using a max of 49 in Apache seems to work reliably, but I'm struggling to understand: (1) why I have to have 2 more Tomcat connector threads allowed than the number of connections I can possibly have and (2) whether "2" is always the safe buffer or whether I'll need 9 on an 8 CPU box or some such.

--
Jess Holle

Reply via email to