I am trying to get a clustered Tomcat 6.0.20 environment to operate in a high 
load environment. As part of the testing regime, we want to be able to run 
continuous high load against a QA setup - and validate that Tomcat operates 
continuously without a hiccup.

The SETUP:

1) Apache front-end (don't ask me why - I don't control this part) using AJP 
through to proxy to the Tomcat cluster.

2) 2 Tomcat hosts 'clustered' (although for the test, I'm only actually hitting 
one of the tomcats). Both are identically configured, 8-processor, 8GB systems 
running Tomcat 6.0.20. The Cluster is functioning proper (near as we can tell). 
The Tomcats have PermSize=1g, Xmx=6g, Xms=3g.

3) 2 "load generators" using JMeter to make requests against the Apache host. 
They are running 100 threads (each) to request a simple unauthenticated page. 
They are running 20 threads each to perform "registration" and "login" (the 
primary difference being that registration and login makes 5 requests per 
thread, and they end up creating a much larger 'session' object when they are 
done).

4) Watching the 'session count' using "/manager/html" on the Tomcat that we're 
hitting.

The "problem" we're seeing:

1) Watching the 'session' count we see the number of sessions increase to about 
450,000 over the course of about 40 minutes. (Of those, they lean about 
120-to-1 for simple "empty" sessions created by the single-page requests.) The 
sessions for the single-page requests have an expire after time of '1 second'. 
Near as we can tell, none of these sessions expire while we are under load.

2) We watch the garbage collection activity by tailing the log file, and notice 
that after we reach the 450,000 sessions limit, the Tomcat starts to perform 
Full GCs. The Full GCs take about 20 seconds (even a little more), and there is 
about 2-5 seconds between the Full GCs, so essentially 80+% of the time is 
spent doing Full GCs, the Tomcat is effectively 'hung' at this point.

3) EXCEPT, if we stop the load generator (and nothing else is changed), 
immediately the session count on the Tomcat begins to drop - and Full GCs stop 
within a couple more cycles. If we wait ~3 minutes, the sessions drop down to 
only the sessions that haven't reached their inactivity timeout - and we can 
restart the load generators and go again for another 40 mins (or so).

The question:

Is there a setting we're missing that tells Tomcat to make session expiration a 
higher priority?

--
Robin D. Wilson
Director of Web Development
KingsIsle Entertainment, Inc.
CELL: 512-426-3929
DESK: 512-623-5913
www.KingsIsle.com



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

Reply via email to