-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Neil,

On 8/21/2009 11:10 AM, neilgoldsmith wrote:
> periodically they will experience a big slowdown on the app server
> which does eventually recover (slows down for maybe an hour). We had
> them increase their maxThreads from 150 to 300 and increase the heap
> size

If the heap size were a problem, you would be getting OutOfMemoryErrors.
I wouldn't bother increasing the heap size.

If periodic slowdowns are occurring on one box, and you can observe them
using code like this:

> LOG("ICConnectorManager.doGet: Wait time to return response:" +
> (System.currentTimeMillis() - waitStart) + "ms for request ID:" + reqID);
> LOG("ICConnectorManager.doGet: Looking up " + reqID + " and returning
> response back to caller:" + sResponse);

...then I would guess that increasing the number of worker threads would
exacerbate the problem rather than resolving it: your webapp is more
likely to be thrashing than anything else, and adding more threads isn't
likely to help.

You didn't say anything that would lead me down another path, so I'll
tell you what my gut tells me: you have a bad hard disk or NFS link
where your log files are being written. If that's the case, you'll see
multi-second hiccups and stuff like that while the log statements
attempt to flush to the disk (which may be masked at times by OS-level
buffering, etc.).

Thrashing and disk problems are the only things I can think of, and you
say that the box recovers (correlated to a drop in traffic?) and that
nothing else is running on the box, so I'd bet on #2.

Peter's suggestion that GC could be interfering is a good one, except
that you'd only expect to see several hiccups in performance maybe over
a 5-to-10 second period, depending on your heap settings (and 1GiB isn't
a very big heap). It shouldn't take very long to recover from a heap
shuffle. Knowing your JVM version and GC settings would be good, too.

Peter's question about app-level synchro locks is a good one, too. What
does the LOG method actually do? That's not a log4j method, so you've
probably wired log4j into your application using a log-agnostic API. Is
it possible you've synchronized that and created a problem for yourself?

Finally, what else can you tell us about these slowdowns? Do they always
occur at the same time of day? With the same amount of (high) volume? If
it happens at exactly the same time every day, consider blaming a backup
or similar process as has been suggested.

- -chris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAkqO258ACgkQ9CaO5/Lv0PDY4wCdGK5ioG0gGP+dOAmtriEKnp2T
coMAoKLSfFV2IpriuRwpUkUlLRWxoAmG
=PbvQ
-----END PGP SIGNATURE-----

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

Reply via email to