You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by pe...@kisstechnologies.co.uk on 2003/08/01 19:28:45 UTC

Problems with Tomcat in a high load environment

Hi,
we are running Tomcat 4.1.18 on Windows 2000 under JDK1.4.1_01.  We are 
using IIS as a web server connecting using the ISAPI JK 2 connector.  We 
are currently experiencing 2 seperate problems when under high load (ie > 
30 requests per second):

1.  A huge number of log events (~30 sets per minute) are generated in the 
NT event log which show problems with the ISAPI connector.  Each time 
there is a problem, 7 lines are created:

Error: [jk_worker_ajp13.c (512)]: ajp13.service() Error  forwarding 
ajp13:localhost:8029 1 0
Error: [jk_worker_ajp13.c (416)]: ajp13.service() ajpGetReply recoverable 
error 3
Error: [jk_handler_response.c (178)]: handler.response() Error sending 
response 
Error: [jk_service_iis.c (157)]: jk_ws_service_t::head, 
ServerSupportFunction failed
Error: [jk_worker_ajp13.c (416)]: ajp13.service() ajpGetReply recoverable 
error 3
Error: [jk_handler_response.c (200)]: Error ajp_process_callback - write 
failed
Error: [jk_service_iis.c (247)]: jk_ws_service_t::write, WriteClient 
failed

These I think lead to the eventual crash of IIS however I also suspect 
that they may cause user errors though I havent actually seen any evidence 
of this.  Does anyone know anything about these errors or what I can do to 
reduce them?  Could it be a tuning of Tomcat issue?

2. The server is set up currently with -Xms512m and the same for Xmx. 
This, I would have thought, was OK for this application, though of course 
I could be wrong, but is in any case irrelevant to the problem as if I 
increase memory to 1Gb it makes no odds.
The server will run fine for a few minutes at about 128m of memory usage. 
At some (slightly random point with no obvious trigger), it will in a 
matter of seconds use up all available memory, thus triggering a huge rise 
in the processor usage which sits at roughly 50-60% (across 2 processors) 
constantly.  It is worth noting that 1 processor is not maxed out - the 
load is relatively evenly distributed.
After a further while, the young generation space runs out of memory and a 
process ensues of the processor load "bouncing" up to 100% and back to 60% 
over and over again as it GCs, reduces the momery used to ~ 15m less than 
it was, then it is used up again and so on.  This obviously seriously 
impacts the usage of the application.  I cant see why it is doing it; this 
is an ecommerce application and the loads are not that high - clearly a 
leak of some description is occuring somewhere but the speed with which 
these changes happen baffle me, and I dont thik there is much setup work I 
can do to change it.  I could install a profiler to find out whats going 
on but it is a live system and I am loath to do so.
Finally it is worth noting that I have only just made this system live and 
a functionally identical although architecturally simpler version ran 
quite happily under the same loads using no more than 256m of ram under 
JRun 3.1.

Any ideas?!

cheers
Pete

Kiss Technologies

http://www.kisstechnologies.co.uk/

4, Percy Street
London
W1T 1DF

Phone numbers:

Phone 020 7692 9922
Fax 020 7692 9923