You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by James Courtney <Jc...@inphonic.com> on 2003/08/26 23:45:22 UTC
mod_jk2 locks up under load
This is a little tricky to reproduce but...
Apache 2.0.45
Tomcat 4.1.24 (or .27 for that matter)
mod_jk2 2.0.2
everything built and running on Solaris 2.8
Connect all machines using a 100 Mbit switch or something fast.
Create two instances of tomcat with Coyote AJP 13 connectors where enableLookups is false and connectionTimeout is 0. Use jvmRoutes of portal1 and portal2. Under the webapps/ROOT directory create a set of files of various sizes like:
SIZE (BYTES) FILE NAME
------------ ---------
128 128.txt
256 256.txt
512 512.txt
1024 1024.txt
2048 2048.txt
4096 4096.txt
Set up your Apache with a basic httpd.conf and workers.properties like those included.
Use the load generating script and Java app like that included with a command line like
./test.sh 40 200 http://myserver:myport
To create 40 threads each creating 200 requests for a paricular file from the given URL.
You may choose to monitor the server-status apache page (mod_status) and look for frozen 'W' slots.
The test script may sometimes run to completion without problems but more often than not it fails to complete and locks up.
At some point the tomcat(s) become saturated and run out of threads (message sent to log for tomcat):
[java] SEVERE: All threads are busy, waiting. Please increase maxThreads or check the servlet status75 75
Accompanying this the mod_jk2 in the Apache starts to block on reading headers from AJP13 responses (the send of the request works, the read for the header of the response blocks indefinitely).
mod_jk does not exhibit this behavior. Setting connectionTimeout on the Coyote endpoint prevents the lockup but there is definitely inconsistent performance as the connections timeout.
<<stuff.tar.gz>>