I really appreciate your input Leon.

On Wed, 2009-01-28 at 11:07 +0100, Leon Rosenberg wrote:

> > "RMI TCP Connection(42)-173.x.x.x" - Thread t...@112
> >   java.lang.Thread.State: RUNNABLE
> 
> reading from socket, usually not a problem.
> 
I thought so. Thanks.

> > "http-8081-35" - Thread t...@71
> >   java.lang.Thread.State: RUNNABLE
> >        at java.lang.String.equals(String.java:1018)
> >        at
> > com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:554)
> >        at
> > org.codehaus.xfire.soap.handler.ReadHeadersHandler.invoke(ReadHeadersHandler.java:44)

> This one actually looks like a problem, was the server under load as
> you created the dump, or did you removed the load first?
No, the server was not under load at all. And I took various thread
dumps at random intervals, and they thread was still there (same thread
number). Maybe there is an infinite loop, but I don't know why it works
for a random amount of time, and then freezes.

> If there were no external requests to the server, you most probably
> have an infinite loop somewhere (how stable is xfire anyway?) or you
> have a really really really large xml file to parse. 
That's a good question. I have no experience with XFire. Would there be
a way to know which XML file it's parsing?

> 
> > "http-8081-31" - Thread t...@67
> >   java.lang.Thread.State: RUNNABLE
> >        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl
> > $PrologDriver.next(XMLDocumentScannerImpl.java:930)
> >        at
> > com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
> >        at
> > com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
> >        at
> > com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:548)
> >        at
> > org.codehaus.xfire.soap.handler.ReadHeadersHandler.invoke(ReadHeadersHandler.java:44)
> >        at
> > org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
> >        at
> > org.codehaus.xfire.transport.DefaultEndpoint.onReceive(DefaultEndpoint.java:64)
> >        at
> > org.codehaus.xfire.transport.AbstractChannel.receive(AbstractChannel.java:38)
> >        at
> > org.codehaus.xfire.transport.http.XFireServletController.invoke(XFireServletController.java:304)
> >        at
> > org.codehaus.xfire.transport.http.XFireServletController.doService(XFireServletController.java:129)
> >        at
> > org.codehaus.xfire.transport.http.XFireServlet.doPost(XFireServlet.java:116)
> >
> 
> note that the XFire path is almost identical.
> Personally I neved managed to catch healthy code in something like
> String.equals(), but it may be possible, even imho unlikeable.

> The dump looks healthy, but is it the dump from the tomcat 5.5 or tomcat 6?
> Because if tomcat 6 is the problem and the dump is from tomcat 5 its useless 
> :-)
> 
This was the heap dump from Tomcat 6.

> you need more research :-) For now it looks like your first tomcat is
> waiting for the second tomcat which just can't handle the requests as
> fast as its expected. You may want to check configuration options of
> both (threads in the connector etc).
If the threadMax would be too low in the connector, wouldn't the
"freeze" be over once there are free connections? And also, how can a
small threadMax make a thread hang? For example the one that is trying
to read an XML file.

> Also the heap dump of the second tomcat would be useful (if this one
> is from first).
> And a thread dump shortly after the traffic has gone (for example kill
> first tomcat, wait 1 minute, make thread dump).
> 
Did this, see the output (I removed the RMI threads):

"TP-Monitor" - Thread t...@28
   java.lang.Thread.State: TIMED_WAITING on 
org.apache.tomcat.util.threads.threadpool$monitorrunna...@498364
        at java.lang.Object.wait(Native Method)
        at 
org.apache.tomcat.util.threads.ThreadPool$MonitorRunnable.run(ThreadPool.java:565)
        at java.lang.Thread.run(Thread.java:619)

   Locked ownable synchronizers:
        - None

"TP-Processor4" - Thread t...@27
   java.lang.Thread.State: RUNNABLE
        at java.net.PlainSocketImpl.socketAccept(Native Method)
        at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
        - locked java.net.sockssocketi...@134af1
        at java.net.ServerSocket.implAccept(ServerSocket.java:453)
        at java.net.ServerSocket.accept(ServerSocket.java:421)
        at org.apache.jk.common.ChannelSocket.accept(ChannelSocket.java:306)
        at 
org.apache.jk.common.ChannelSocket.acceptConnections(ChannelSocket.java:660)
        at 
org.apache.jk.common.ChannelSocket$SocketAcceptor.runIt(ChannelSocket.java:870)
        at 
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
        at java.lang.Thread.run(Thread.java:619)

   Locked ownable synchronizers:
        - None

"TP-Processor3" - Thread t...@26
   java.lang.Thread.State: WAITING on 
org.apache.tomcat.util.threads.threadpool$controlrunna...@514577
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:485)
        at 
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:662)
        at java.lang.Thread.run(Thread.java:619)

   Locked ownable synchronizers:
        - None

"TP-Processor2" - Thread t...@25
   java.lang.Thread.State: WAITING on 
org.apache.tomcat.util.threads.threadpool$controlrunna...@1a79b48
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:485)
        at 
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:662)
        at java.lang.Thread.run(Thread.java:619)

   Locked ownable synchronizers:
        - None

"TP-Processor1" - Thread t...@24
   java.lang.Thread.State: WAITING on 
org.apache.tomcat.util.threads.threadpool$controlrunna...@c3a53b
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:485)
        at 
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:662)
        at java.lang.Thread.run(Thread.java:619)

   Locked ownable synchronizers:
        - None

"http-8081-Acceptor-0" - Thread t...@23
   java.lang.Thread.State: RUNNABLE
        at java.net.PlainSocketImpl.socketAccept(Native Method)
        at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
        - locked java.net.sockssocketi...@9d478b
        at java.net.ServerSocket.implAccept(ServerSocket.java:453)
        at java.net.ServerSocket.accept(ServerSocket.java:421)
        at 
org.apache.tomcat.util.net.DefaultServerSocketFactory.acceptSocket(DefaultServerSocketFactory.java:61)
        at 
org.apache.tomcat.util.net.JIoEndpoint$Acceptor.run(JIoEndpoint.java:310)
        at java.lang.Thread.run(Thread.java:619)

   Locked ownable synchronizers:
        - None

"ContainerBackgroundProcessor[StandardEngine[Catalina]]" - Thread t...@22
   java.lang.Thread.State: TIMED_WAITING
        at java.lang.Thread.sleep(Native Method)
        at 
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1579)
        at java.lang.Thread.run(Thread.java:619)

   Locked ownable synchronizers:
        - None

"Monitor Runner" - Thread t...@21
   java.lang.Thread.State: TIMED_WAITING
        at java.lang.Thread.sleep(Native Method)
        at com.icesoft.util.MonitorRunner$1.run(MonitorRunner.java:20)

   Locked ownable synchronizers:
        - None

"pool-1-thread-1" - Thread t...@20
   java.lang.Thread.State: TIMED_WAITING on 
java.util.concurrent.locks.abstractqueuedsynchronizer$conditionobj...@94c5e7
        at sun.misc.Unsafe.park(Native Method)
        at 
java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:198)
        at 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1963)
        at java.util.concurrent.DelayQueue.take(DelayQueue.java:164)
        at 
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:582)
        at 
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:575)
        at 
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:946)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:906)
        at java.lang.Thread.run(Thread.java:619)

   Locked ownable synchronizers:
        - None

"Store org.hibernate.cache.StandardQueryCache Spool Thread" - Thread t...@18
   java.lang.Thread.State: TIMED_WAITING
        at java.lang.Thread.sleep(Native Method)
        at 
net.sf.ehcache.store.DiskStore.spoolAndExpiryThreadMain(DiskStore.java:563)
        at net.sf.ehcache.store.DiskStore.access$800(DiskStore.java:64)
        at 
net.sf.ehcache.store.DiskStore$SpoolAndExpiryThread.run(DiskStore.java:1047)

   Locked ownable synchronizers:
        - None

"Store org.hibernate.cache.UpdateTimestampsCache Spool Thread" - Thread t...@17
   java.lang.Thread.State: TIMED_WAITING
        at java.lang.Thread.sleep(Native Method)
        at 
net.sf.ehcache.store.DiskStore.spoolAndExpiryThreadMain(DiskStore.java:563)
        at net.sf.ehcache.store.DiskStore.access$800(DiskStore.java:64)
        at 
net.sf.ehcache.store.DiskStore$SpoolAndExpiryThread.run(DiskStore.java:1047)

   Locked ownable synchronizers:
        - None

"HSQLDB Timer @55d1b4" - Thread t...@16
   java.lang.Thread.State: TIMED_WAITING on 
org.hsqldb.lib.hsqltimer$taskqu...@14cff90
        at java.lang.Object.wait(Native Method)
        at org.hsqldb.lib.HsqlTimer$TaskQueue.park(Unknown Source)
        at org.hsqldb.lib.HsqlTimer.nextTask(Unknown Source)
        at org.hsqldb.lib.HsqlTimer$TaskRunner.run(Unknown Source)
        at java.lang.Thread.run(Thread.java:619)

   Locked ownable synchronizers:
        - None

"Timer-0" - Thread t...@15
   java.lang.Thread.State: WAITING on java.util.taskqu...@1e6661
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:485)
        at java.util.TimerThread.mainLoop(Timer.java:483)
        at java.util.TimerThread.run(Timer.java:462)

   Locked ownable synchronizers:
        - None

"Session Monitor" - Thread t...@14
   java.lang.Thread.State: TIMED_WAITING
        at java.lang.Thread.sleep(Native Method)
        at 
com.icesoft.faces.webapp.http.servlet.SessionDispatcher$Listener$1.run(SessionDispatcher.java:208)

   Locked ownable synchronizers:
        - None

"Store userCache Spool Thread" - Thread t...@13
   java.lang.Thread.State: TIMED_WAITING
        at java.lang.Thread.sleep(Native Method)
        at 
net.sf.ehcache.store.DiskStore.spoolAndExpiryThreadMain(DiskStore.java:573)
        at net.sf.ehcache.store.DiskStore.access$800(DiskStore.java:65)
        at 
net.sf.ehcache.store.DiskStore$SpoolAndExpiryThread.run(DiskStore.java:1057)

   Locked ownable synchronizers:
        - None

"Signal Dispatcher" - Thread t...@4
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
        - None

"Finalizer" - Thread t...@3
   java.lang.Thread.State: WAITING on java.lang.ref.referencequeue$l...@1d36f77
        at java.lang.Object.wait(Native Method)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132)
        at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)

   Locked ownable synchronizers:
        - None

"Reference Handler" - Thread t...@2
   java.lang.Thread.State: WAITING on java.lang.ref.reference$l...@3b1799
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:485)
        at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)

   Locked ownable synchronizers:
        - None

"main" - Thread t...@1
   java.lang.Thread.State: RUNNABLE
        at java.net.PlainSocketImpl.socketAccept(Native Method)
        at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
        - locked java.net.sockssocketi...@735aa1
        at java.net.ServerSocket.implAccept(ServerSocket.java:453)
        at java.net.ServerSocket.accept(ServerSocket.java:421)
        at 
org.apache.catalina.core.StandardServer.await(StandardServer.java:389)
        at org.apache.catalina.startup.Catalina.await(Catalina.java:642)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:602)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)

   Locked ownable synchronizers:
        - None




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

Reply via email to