Hi Yoav.

Thanks for your response - was hoping someone would wade through my rather
lengthy email!

Anyway, just some additional info/responses that may assist with
understanding our problem(s):

1. We have tested Tomcat standalone. We probably shouldn't have even
mentioned the Apache/AJP setup as it just confuses the issue.

2. There are several pages on our server which take over 10 seconds to
process. If we leave these pages out of the stress test, we don't have any
problems. If these are included in the stress test, they seem to create
bottlenecks which eventually result in Tomcat not responding (or responding
VERY slowly) and needing to be restarted.  Surely Tomcat should be able to
process the slower connections/requests without affecting the other, faster
requests.  Many of our tags do database retrievals (currently the database
server IS on the server - sorry forgot to include this in my last post - we
running MSSQL 2000 - using the JDBC Type 4 driver from MS - through a highly
efficient connection pool).  We have run a profiler on the SQL Server - and
that definitely does not have a bottleneck - very quick indeed.

2. Memory: this used to be our biggest problem; however, increasing the heap
and using the -XX:+UseParallelGC switch seemed to solve most of our memory
problems. In fact, with this garbage collector, we rarely see any errors
during our test, it simply goes slower and slower over time.

3. CPU usage goes to 100% during the stress test and stays that way for a
minute or two after we stop the test.

4. If we delete Tomcat's working folder and restart (thus forcing
recompilation), it cannot handle our stress test (lots of timeouts and
exceptions) and we have to leave it for a minute before trying again.

5. Our TLD file contains over 200 tags but only 6 TEI's. The first time we
request a JSP on any site after restarting Tomcat, we get a
ClassNotFoundException for a TEI, even if that JSP does not use a tag with a
TEI. The second JSP request for that site always succeeds. This behaviour
occurs 100% of the time.

Ok, well - I will look into sending you something to try emulate the TEI
problem (probably tomorrow).

Thanks a stack for your help so far - I will try some of your suggestions.

Regards,

Carl Olivier

-----Original Message-----
From: Shapira, Yoav [mailto:[EMAIL PROTECTED] 
Sent: 06 April 2004 04:53 PM
To: Tomcat Users List
Subject: RE: Issues in tomcat 5.0.19



Hi,
That was a nice, detailed message and explanation.

>In Tomcat we have all 25 hosts set up using the Tomcat <Host /> blocks
-
>each <Host /> has its own <Context /> pointing at the correct location
on
>the drive for the site context ROOT.

25 hosts/contexts for tomcat shouldn't be a problem.

>Each Apache VirtualHost sends the Tomcat related requests to Tomcat
using
>the same worker (ajp13:localhost:8009) - is this a potential problem?

Yes, though I don't know enough to say for sure.  Have you tried using
multiple workers and rerunning your stress test?

>In order to get around memory issues Tomcat is started with the
following
>VM Settings:
>
>-Xms128m -Xmx256m -XX:+UseParallelGC

Does performance change if you allocate more memory to the heap, i.e. are
you memory-bound, cpu-bound, i/o-bound, or a combination thereof?

>1.  First request to sites are causing problems with TEI classloading - 
>even though the classes ARE in fact in the WEB-INF/classes location of
the
>relevant web app.

This I'm completely unfamiliar with.  Does it happen with tomcat standalone?
If so, can you create a small WAR that will allow us to reproduce the
problem?

>2.  Load - when we run load tests on the server we have major issues.
The
>sites run REALLY slowly - our test is a custom written load tester that 
>parses apache request logs for the exact test sites we have on the box
(the
>live equivs) and duplicates the requests - except we can configure the 
>number of concurrent requests to run the test on.  The page responses
are
>REALLY slow after a while and we also get IOExceptions occurring.

A couple of notes: JMeter's last release has something that will parse web
server access logs to create comparable load in a stress test plan for you
to run, so you might be able to ditch your custom tester. (Which is good,
because no one can reproduce results obtained with your custom tester).

Are you saying the requests are first run fast, and then slow, when they
should all be taking the same time?

>1.  The number of concurrent requests and the fact that pages and the 
>request reponse times are getting slow cause a major bottleneck in
Tomcat -
>which leads to the piling up of queued requests - until the acceptCount
is
>reached - and the server becomes totally unresponsive.

Are the requests slow because your tags take a while (you mentioned they
were "big" tags, which I assume means they do a lot of work)?  Or are they
slow because tomcat is churning?  I'm not sure of the causality in your
statement above.  What happens if you raise maxProccesors/maxThreads as well
as the acceptCount?


>2.  GC - the JVM is not able to handle the GC of so many concurrent
threads
>- which in turn leads to unresonsive threads/requests.

I highly doubt that.  How many threads are we talking about?  We have apps
that have hundreds of threads in the JVM and gigabytes in the heap, and GC
doesn't even cause a discernible pause.  Granted, we have big hardware.

>3.  The classloading issue in tomcat for TEI classes - ???  Is this a
known
>bug in 5.019?

I don't think so.

Some things I would do in your place: 

- Eliminate Apache and mod_jk, and run your tests on tomcat standalone for
now, to help diagnose the classloading, maxProcessors, acceptCount issues.
- Set your contexts to reloadable="false" to take away some threads and
internal tomcat processing, improve performance.
- Try to come up with a tiny, as simple as possible test that brings up the
TEI classloading error,
- Try to use a standard tool like JMeter or AB for your stress testing, so
that at least we're on the same page regarding your results.

Yoav Shapira



This e-mail, including any attachments, is a confidential business
communication, and may contain information that is confidential, proprietary
and/or privileged.  This e-mail is intended only for the individual(s) to
whom it is addressed, and may not be saved, copied, printed, disclosed or
used by anyone else.  If you are not the(an) intended recipient, please
immediately delete this e-mail from your computer system and notify the
sender.  Thank you.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to