I've posted this on tomcat-user, but I can't seem to find the answer...
My setup:
Tomcat 4.1.12, Linux 2.4.9, IBM JRE 1.3.1, running Standalone SSL Coyote
conntector.
My problem is, I've tried to stress test my application and with
moderate load (20 concurrent connections) for a short time (around 1
minute), somehow the port I opened would stop responding. I can still
connect to the port, but it does not do anything.
After trying various different JREs, -X flags, and garbage collection
info, etc, I updated my tomcat to 4.1.14 (test) and now I got the
following exception in stdout when I got into the situation where the
connection hung. Note that I printed out this stack trace myself on
around line 533, where the exception was thrown:
Class org.apache.commons.logging.impl.Log4JCategoryLog does not
implement Log
at
org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:555)
at
org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:289)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:409)
at org.apache.tomcat.util.log.CommonLogHandler.log(CommonLogHandler.java:97)
at org.apache.tomcat.util.log.Log.log(Log.java:198)
at org.apache.tomcat.util.log.Log.log(Log.java:192)
at org.apache.tomcat.util.log.Log.log(Log.java:165)
at org.apache.tomcat.util.threads.ThreadPool.logFull(ThreadPool.java:260)
at org.apache.tomcat.util.threads.ThreadPool.runIt(ThreadPool.java:226)
at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:509)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:533)
at java.lang.Thread.run(Thread.java:512)
Looking into the 4.1.14 source code, it turned out that the thread
(maybe the connection dispatcher thread?) just died when calling the
function logFull(), which happened if all workers are busy, and somehow
log4j failed to do its job (?). After this, there is no more thread
trying to take the incoming connection and that's quite bad. The JVM is
still running OK and I can shutdown the server correctly. Everything
are just waiting, however.
Does this have anything to do with class loader and using different
versions of log4j? Does anyone know how tomcat logged its messages?
Note that this does not happen 100% of the time, sometimes it does log
the message successfully. I suspect there're some thread related issues
here.
I tried commenting out the logFull call and all seem to work ok. What I
don't understand is, will this problem occur elsewhere when it's trying
to log that message?
--
William Lee (Will) | Sendmail Inc.
Email: [EMAIL PROTECTED] | http://www.sendmail.com
Tel: (510) 594-5505 |
--
To unsubscribe, e-mail: <mailto:tomcat-dev-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:tomcat-dev-help@;jakarta.apache.org>