Hi,

we're running 3 tomcat instances on Solaris. We are experiencing extremely
show shutdowns. I've done a thread dump, but as far as I can tell all looks
ok. Does anyone know what is causing this?

We're calling /opt/ec/tomcat/bin/shutdown.sh to shut down the instance.
I see the line: 'INFO: Stopping Coyote HTTP/1.1 on http-8082' appear
quickly. However the java process hangs about for at least another 3
minutes.

Here's the thread dump:

Dec 15, 2009 7:35:23 AM org.apache.coyote.http11.Http11Protocol pause
INFO: Pausing Coyote HTTP/1.1 on http-8082
Dec 15, 2009 7:35:24 AM org.apache.catalina.core.StandardService stop
INFO: Stopping service Catalina
Dec 15, 2009 7:35:26 AM org.apache.coyote.http11.Http11Protocol destroy
INFO: Stopping Coyote HTTP/1.1 on http-8082
2009-12-15 07:36:20
Full thread dump Java HotSpot(TM) Server VM (11.2-b01 mixed mode):

"DestroyJavaVM" prio=3 tid=0x08070000 nid=0x2 waiting on condition
[0x00000000..0xfe46ebb0]
   java.lang.Thread.State: RUNNABLE

"http-8082-1" daemon prio=3 tid=0x0848a800 nid=0xba in Object.wait()
[0xe396d000..0xe396dbf0]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:485)
        at
org.apache.tomcat.util.net.JIoEndpoint$Worker.await(JIoEndpoint.java:423)
        - locked <0xf9e92aa8> (a
org.apache.tomcat.util.net.JIoEndpoint$Worker)
        at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:449)
        at java.lang.Thread.run(Thread.java:619)

"Java2D Disposer" daemon prio=3 tid=0x08dd0000 nid=0x50 in Object.wait()
[0xe407b000..0xe407baf0]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116)
        - locked <0xec1c6cc8> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132)
        at sun.java2d.Disposer.run(Disposer.java:125)
        at java.lang.Thread.run(Thread.java:619)

"pool-1-thread-10" prio=3 tid=0x085b8800 nid=0x38 waiting on condition
[0xe44d9000..0xe44d9af0]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0xeb57f170> (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
        at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1925)
        at
java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:358)
        at
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
        at java.lang.Thread.run(Thread.java:619)

"pool-1-thread-9" prio=3 tid=0x08e0b400 nid=0x37 waiting on condition
[0xe497d000..0xe497db70]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0xeb57f170> (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
        at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1925)
        at
java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:358)
        at
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
        at java.lang.Thread.run(Thread.java:619)

"pool-1-thread-8" prio=3 tid=0x09550c00 nid=0x36 waiting on condition
[0xe49ce000..0xe49ce9f0]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0xeb57f170> (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
        at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1925)
        at
java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:358)
        at
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
        at java.lang.Thread.run(Thread.java:619)

"pool-1-thread-7" prio=3 tid=0x08e74400 nid=0x35 waiting on condition
[0xe45ae000..0xe45aea70]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0xeb57f170> (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
        at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1925)
        at
java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:358)
        at
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
        at java.lang.Thread.run(Thread.java:619)

"pool-1-thread-6" prio=3 tid=0x08739000 nid=0x34 waiting on condition
[0xe4612000..0xe46128f0]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0xeb57f170> (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
        at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1925)
        at
java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:358)
        at
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
        at java.lang.Thread.run(Thread.java:619)

"pool-1-thread-5" prio=3 tid=0x08b5e400 nid=0x32 waiting on condition
[0xe4663000..0xe4663bf0]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0xeb57f170> (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
        at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1925)
        at
java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:358)
        at
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
        at java.lang.Thread.run(Thread.java:619)

"pool-1-thread-4" prio=3 tid=0x08681400 nid=0x31 waiting on condition
[0xe46b4000..0xe46b4c70]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0xeb57f170> (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
        at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1925)
        at
java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:358)
        at
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
        at java.lang.Thread.run(Thread.java:619)

"MultiThreadedHttpConnectionManager cleanup" daemon prio=3 tid=0x0824a400
nid=0x30 in Object.wait() [0xe4705000..0xe4705af0]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116)
        - locked <0xeb8d2bd8> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132)
        at
org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$ReferenceQueueThread.run(MultiThreadedHttpConnectionManager.java:1122)

"pool-1-thread-3" prio=3 tid=0x08b5f800 nid=0x2f waiting on condition
[0xe4756000..0xe4756b70]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0xeb57f170> (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
        at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1925)
        at
java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:358)
        at
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
        at java.lang.Thread.run(Thread.java:619)

"pool-1-thread-2" prio=3 tid=0x0839f800 nid=0x2d waiting on condition
[0xe47f8000..0xe47f8a70]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0xeb57f170> (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
        at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1925)
        at
java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:358)
        at
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
        at java.lang.Thread.run(Thread.java:619)

"pool-1-thread-1" prio=3 tid=0x087f6c00 nid=0x2a waiting on condition
[0xe4849000..0xe4849bf0]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0xeb57f170> (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
        at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1925)
        at
java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:358)
        at
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
        at java.lang.Thread.run(Thread.java:619)

"pool-3-thread-1" prio=3 tid=0x083fe400 nid=0x29 waiting on condition
[0xe489a000..0xe489ac70]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0xeb80e2a0> (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
        at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1925)
        at java.util.concurrent.DelayQueue.take(DelayQueue.java:160)
        at
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:583)
        at
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:576)
        at
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
        at java.lang.Thread.run(Thread.java:619)

"TP-Processor4" daemon prio=3 tid=0x08a28000 nid=0x1f in Object.wait()
[0xe4ed7000..0xe4ed7b70]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:485)
        at org.apache.jk.common.ChannelSocket.accept(ChannelSocket.java:301)
        - locked <0xeb4458c8> (a org.apache.jk.common.ChannelSocket)
        at
org.apache.jk.common.ChannelSocket.acceptConnections(ChannelSocket.java:661)
        at
org.apache.jk.common.ChannelSocket$SocketAcceptor.runIt(ChannelSocket.java:872)
        at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
        at java.lang.Thread.run(Thread.java:619)

"http-8082-Acceptor-0" daemon prio=3 tid=0x08535400 nid=0x1b waiting on
condition [0xe5438000..0xe5438970]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
        at java.lang.Thread.sleep(Native Method)
        at
org.apache.tomcat.util.net.JIoEndpoint$Acceptor.run(JIoEndpoint.java:309)
        at java.lang.Thread.run(Thread.java:619)

"MySQL Statement Cancellation Timer" daemon prio=3 tid=0x08498400 nid=0x18
in Object.wait() [0xe4f79000..0xe4f79af0]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0xeb191718> (a java.util.TaskQueue)
        at java.lang.Object.wait(Object.java:485)
        at java.util.TimerThread.mainLoop(Timer.java:483)
        - locked <0xeb191718> (a java.util.TaskQueue)
        at java.util.TimerThread.run(Timer.java:462)

"Low Memory Detector" daemon prio=3 tid=0x081ab400 nid=0x11 runnable
[0x00000000..0x00000000]
   java.lang.Thread.State: RUNNABLE

"CompilerThread1" daemon prio=3 tid=0x081a8800 nid=0x10 waiting on condition
[0x00000000..0xe55b2048]
   java.lang.Thread.State: RUNNABLE

"CompilerThread0" daemon prio=3 tid=0x081a7000 nid=0xf waiting on condition
[0x00000000..0xe55f30c8]
   java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" daemon prio=3 tid=0x081a5c00 nid=0xe waiting on
condition [0x00000000..0x00000000]
   java.lang.Thread.State: RUNNABLE

"Finalizer" daemon prio=3 tid=0x08190400 nid=0xd in Object.wait()
[0xe5695000..0xe5695a70]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116)
        - locked <0xeb06e320> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132)
        at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)

"Reference Handler" daemon prio=3 tid=0x0818ec00 nid=0xc in Object.wait()
[0xe56e6000..0xe56e68f0]
   java.lang.Thread.State: WAITING (on object monitor)
        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 <0xeb06b6b8> (a java.lang.ref.Reference$Lock)

"VM Thread" prio=3 tid=0x0818bc00 nid=0xb runnable

"GC task thread#0 (ParallelGC)" prio=3 tid=0x08076800 nid=0x3 runnable

"GC task thread#1 (ParallelGC)" prio=3 tid=0x08077c00 nid=0x4 runnable

"GC task thread#2 (ParallelGC)" prio=3 tid=0x08079000 nid=0x5 runnable

"GC task thread#3 (ParallelGC)" prio=3 tid=0x0807a400 nid=0x6 runnable

"GC task thread#4 (ParallelGC)" prio=3 tid=0x0807b800 nid=0x7 runnable

"GC task thread#5 (ParallelGC)" prio=3 tid=0x0807cc00 nid=0x8 runnable

"GC task thread#6 (ParallelGC)" prio=3 tid=0x0807e000 nid=0x9 runnable

"GC task thread#7 (ParallelGC)" prio=3 tid=0x0807f800 nid=0xa runnable

"VM Periodic Task Thread" prio=3 tid=0x081ad400 nid=0x12 waiting on
condition

JNI global references: 852

Heap
 PSYoungGen      total 12608K, used 2968K [0xf9200000, 0xfa200000,
0xfb000000)
  eden space 8832K, 5% used [0xf9200000,0xf9272180,0xf9aa0000)
  from space 3776K, 66% used [0xf9e50000,0xfa0c41e8,0xfa200000)
  to   space 3776K, 0% used [0xf9aa0000,0xf9aa0000,0xf9e50000)
 PSOldGen        total 116736K, used 91584K [0xeae00000, 0xf2000000,
0xf9200000)
  object space 116736K, 78% used [0xeae00000,0xf0770288,0xf2000000)
 PSPermGen       total 86016K, used 47160K [0xe5a00000, 0xeae00000,
0xeae00000)
  object space 86016K, 54% used [0xe5a00000,0xe880e200,0xeae00000)



many thanks


-- 
View this message in context: 
http://old.nabble.com/Very-slow-shutdown---3-mins-tp26791794p26791794.html
Sent from the Tomcat - User mailing list archive at Nabble.com.


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

Reply via email to