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>

Reply via email to