You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by bu...@apache.org on 2004/10/25 23:32:09 UTC
DO NOT REPLY [Bug 31886] New: -
Tomcat hangs under heavy load using JDBCStore
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=31886>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=31886
Tomcat hangs under heavy load using JDBCStore
Summary: Tomcat hangs under heavy load using JDBCStore
Product: Tomcat 4
Version: 4.1.30
Platform: All
OS/Version: All
Status: NEW
Severity: Critical
Priority: Other
Component: Catalina
AssignedTo: tomcat-dev@jakarta.apache.org
ReportedBy: tom@squeat.com
We have a pretty heavily loaded website that periodically (1 or 2 times a day) hangs (stops servicing
requests) with the following stack trace:
java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:782)
at java.util.HashMap$EntryIterator.next(HashMap.java:824)
at java.util.HashMap.writeObject(HashMap.java:976)
at sun.reflect.GeneratedMethodAccessor133.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:809)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1296)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:278)
at org.apache.catalina.session.StandardSession.writeObject(StandardSession.java:1429)
at org.apache.catalina.session.StandardSession.writeObjectData(StandardSession.java:852)
at org.apache.catalina.session.JDBCStore.save(JDBCStore.java:690)
at org.apache.catalina.session.PersistentManagerBase.writeSession(PersistentManagerBase.java:
739)
at
org.apache.catalina.session.PersistentManagerBase.processMaxIdleBackups(PersistentManagerBase.java
:1063)
at
org.apache.catalina.session.PersistentManagerBase.processPersistenceChecks(PersistentManagerBase.ja
va:477)
at org.apache.catalina.session.PersistentManagerBase.run(PersistentManagerBase.java:1141)
at java.lang.Thread.run(Thread.java:534)
Here are a couple ways this could be fixed:
1. catch the ConcurrentModificationException in JDBCStore.save()
2. catch Exception in PersistentManagerBase.run()
I don't believe this is will be a problem with Tomcat 5 because ContainerBase.backgroundProcess()
catches Exception. But I haven't tested this in Tomcat 5 yet (soon I hope).
Note: I am currently running Tomcat 4.1.31 but I know we had this problem with earlier versions
(4.1.24). I have worked around it before and will do so again by making my own custom build but it
would be nice to get this one fixed.
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org