记问题排查:java进程未正常退出

来源:互联网 发布:me3630 软件 用户手册 编辑:程序博客网 时间:2024/06/08 01:40

1.现象

运行一Java代码(工具类,执行特定JUnit失败用例),出现执行用例结束,但无法退出。

2.排查问题

排查工具使用:VisualVM,jstat, jstack

查看gc:

[root@10 WeTest]# jstat -gcutil 23726 250 30       S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT     0.00  40.16  26.19   0.00  99.83      3    0.084     0    0.000    0.084  0.00  40.16  28.19   0.00  99.83      3    0.084     0    0.000    0.084  0.00  40.16  28.19   0.00  99.83      3    0.084     0    0.000    0.084  0.00  40.16  28.19   0.00  99.83      3    0.084     0    0.000    0.084  0.00  40.16  28.19   0.00  99.83      3    0.084     0    0.000    0.084  0.00  40.16  28.19   0.00  99.83      3    0.084     0    0.000    0.084  0.00  40.16  28.19   0.00  99.83      3    0.084     0    0.000    0.084  0.00  40.16  28.19   0.00  99.83      3    0.084     0    0.000    0.084  0.00  40.16  28.19   0.00  99.83      3    0.084     0    0.000    0.084  0.00  40.16  28.19   0.00  99.83      3    0.084     0    0.000    0.084  0.00  40.16  28.19   0.00  99.83      3    0.084     0    0.000    0.084  0.00  40.16  28.19   0.00  99.83      3    0.084     0    0.000    0.084  0.00  40.16  28.19   0.00  99.83      3    0.084     0    0.000    0.084  0.00  40.16  28.19   0.00  99.83      3    0.084     0    0.000    0.084  0.00  40.16  28.19   0.00  99.83      3    0.084     0    0.000    0.084  0.00  40.16  28.19   0.00  99.83      3    0.084     0    0.000    0.084  0.00  40.16  28.19   0.00  99.83      3    0.084     0    0.000    0.084  0.00  40.16  28.19   0.00  99.83      3    0.084     0    0.000    0.084  0.00  40.16  28.19   0.00  99.83      3    0.084     0    0.000    0.084  0.00  40.16  28.19   0.00  99.83      3    0.084     0    0.000    0.084  0.00  40.16  28.19   0.00  99.83      3    0.084     0    0.000    0.084  0.00  40.16  28.19   0.00  99.83      3    0.084     0    0.000    0.084  0.00  40.16  28.19   0.00  99.83      3    0.084     0    0.000    0.084  0.00  40.16  28.19   0.00  99.83      3    0.084     0    0.000    0.084  0.00  40.16  28.19   0.00  99.83      3    0.084     0    0.000    0.084  0.00  40.16  28.19   0.00  99.83      3    0.084     0    0.000    0.084  0.00  40.16  28.19   0.00  99.83      3    0.084     0    0.000    0.084  0.00  40.16  28.19   0.00  99.83      3    0.084     0    0.000    0.084  0.00  40.16  28.19   0.00  99.83      3    0.084     0    0.000    0.084  0.00  40.16  28.19   0.00  99.83      3    0.084     0    0.000    0.084

查看线程栈:

[root@10 WeTest]# jstack 237262016-01-20 14:23:48Full thread dump Java HotSpot(TM) 64-Bit Server VM (24.65-b04 mixed mode):"Attach Listener" daemon prio=10 tid=0x00007f793c001000 nid=0x4804 waiting on condition [0x0000000000000000]   java.lang.Thread.State: RUNNABLE"pool-2-thread-15" prio=10 tid=0x00007f7918190000 nid=0x2af5 waiting on condition [0x00007f79b3efd000]   java.lang.Thread.State: WAITING (parking)        at sun.misc.Unsafe.park(Native Method)        - parking to wait for  <0x00000005955103c8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)        at java.lang.Thread.run(Thread.java:745)"pool-2-thread-14" prio=10 tid=0x00007f791818e000 nid=0x2af1 waiting on condition [0x00007f79b3ffe000]   java.lang.Thread.State: WAITING (parking)        at sun.misc.Unsafe.park(Native Method)        - parking to wait for  <0x00000005955103c8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)        at java.lang.Thread.run(Thread.java:745)"pool-2-thread-13" prio=10 tid=0x00007f791818c000 nid=0x2aee waiting on condition [0x00007f79b816a000]   java.lang.Thread.State: WAITING (parking)        at sun.misc.Unsafe.park(Native Method)        - parking to wait for  <0x00000005955103c8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)        at java.lang.Thread.run(Thread.java:745)"pool-2-thread-12" prio=10 tid=0x00007f7918189800 nid=0x2ae9 waiting on condition [0x00007f79b826b000]   java.lang.Thread.State: WAITING (parking)        at sun.misc.Unsafe.park(Native Method)        - parking to wait for  <0x00000005955103c8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)        at java.lang.Thread.run(Thread.java:745)"pool-2-thread-11" prio=10 tid=0x00007f7918187800 nid=0x2ae3 waiting on condition [0x00007f79b836c000]   java.lang.Thread.State: WAITING (parking)        at sun.misc.Unsafe.park(Native Method)        - parking to wait for  <0x00000005955103c8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)        at java.lang.Thread.run(Thread.java:745)"pool-2-thread-10" prio=10 tid=0x00007f7918185800 nid=0x2add waiting on condition [0x00007f79b846d000]   java.lang.Thread.State: WAITING (parking)        at sun.misc.Unsafe.park(Native Method)        - parking to wait for  <0x00000005955103c8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)        at java.lang.Thread.run(Thread.java:745)"pool-2-thread-9" prio=10 tid=0x00007f7918183800 nid=0x2adc waiting on condition [0x00007f79b856e000]   java.lang.Thread.State: WAITING (parking)        at sun.misc.Unsafe.park(Native Method)        - parking to wait for  <0x00000005955103c8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)        at java.lang.Thread.run(Thread.java:745)"pool-2-thread-8" prio=10 tid=0x00007f7918181800 nid=0x2ad8 waiting on condition [0x00007f79b866f000]   java.lang.Thread.State: WAITING (parking)        at sun.misc.Unsafe.park(Native Method)        - parking to wait for  <0x00000005955103c8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)        at java.lang.Thread.run(Thread.java:745)"pool-2-thread-7" prio=10 tid=0x00007f791817f800 nid=0x2ad7 waiting on condition [0x00007f79b8770000]   java.lang.Thread.State: WAITING (parking)        at sun.misc.Unsafe.park(Native Method)        - parking to wait for  <0x00000005955103c8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)        at java.lang.Thread.run(Thread.java:745)"pool-2-thread-6" prio=10 tid=0x00007f791817d800 nid=0x2ad4 waiting on condition [0x00007f79b8871000]   java.lang.Thread.State: WAITING (parking)        at sun.misc.Unsafe.park(Native Method)        - parking to wait for  <0x00000005955103c8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)        at java.lang.Thread.run(Thread.java:745)"pool-2-thread-5" prio=10 tid=0x00007f791817b000 nid=0x2acf waiting on condition [0x00007f79b8972000]   java.lang.Thread.State: WAITING (parking)        at sun.misc.Unsafe.park(Native Method)        - parking to wait for  <0x00000005955103c8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)        at java.lang.Thread.run(Thread.java:745)"pool-2-thread-4" prio=10 tid=0x00007f7918179000 nid=0x2ace waiting on condition [0x00007f79b8a73000]   java.lang.Thread.State: WAITING (parking)        at sun.misc.Unsafe.park(Native Method)        - parking to wait for  <0x00000005955103c8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)        at java.lang.Thread.run(Thread.java:745)"pool-2-thread-3" prio=10 tid=0x00007f7918177800 nid=0x2acb waiting on condition [0x00007f79b8b74000]   java.lang.Thread.State: WAITING (parking)        at sun.misc.Unsafe.park(Native Method)        - parking to wait for  <0x00000005955103c8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)        at java.lang.Thread.run(Thread.java:745)"pool-2-thread-2" prio=10 tid=0x00007f7918176000 nid=0x2aca waiting on condition [0x00007f79b8c75000]   java.lang.Thread.State: WAITING (parking)        at sun.misc.Unsafe.park(Native Method)        - parking to wait for  <0x00000005955103c8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)        at java.lang.Thread.run(Thread.java:745)"pool-2-thread-1" prio=10 tid=0x00007f7918169800 nid=0x2ac6 waiting on condition [0x00007f79b8d76000]   java.lang.Thread.State: WAITING (parking)        at sun.misc.Unsafe.park(Native Method)        - parking to wait for  <0x00000005955103c8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)        at java.lang.Thread.run(Thread.java:745)"Druid-ConnectionPool-Destroy-1241386791" daemon prio=10 tid=0x00007f791815d000 nid=0x3f7 waiting on condition [0x00007f79b92e7000]   java.lang.Thread.State: TIMED_WAITING (sleeping)        at java.lang.Thread.sleep(Native Method)        at com.alibaba.druid.pool.DruidDataSource$DestroyConnectionThread.run(DruidDataSource.java:1935)"Druid-ConnectionPool-Create-1241386791" daemon prio=10 tid=0x00007f791815c000 nid=0x3f2 waiting on condition [0x00007f79b93e8000]   java.lang.Thread.State: WAITING (parking)        at sun.misc.Unsafe.park(Native Method)        - parking to wait for  <0x00000005955204c0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)        at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1861)"Abandoned connection cleanup thread" daemon prio=10 tid=0x00007f791811d000 nid=0x3ac in Object.wait() [0x00007f79b94e9000]   java.lang.Thread.State: TIMED_WAITING (on object monitor)        at java.lang.Object.wait(Native Method)        - waiting on <0x0000000595520560> (a java.lang.ref.ReferenceQueue$Lock)        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)        - locked <0x0000000595520560> (a java.lang.ref.ReferenceQueue$Lock)        at com.mysql.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:43)"pool-1-thread-1" prio=10 tid=0x00007f792403e000 nid=0x20b waiting on condition [0x00007f79b9cf5000]   java.lang.Thread.State: TIMED_WAITING (sleeping)        at java.lang.Thread.sleep(Native Method)        at com.weibo.common.Utils.sleep(Unknown Source)        at com.weibo.cases.unreadpool.OutBackwardRefreshStatusTest.backwardRefreshNot10MinTest(Unknown Source)        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)        at java.lang.reflect.Method.invoke(Method.java:606)        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)        at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)        at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)        at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)        at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:55)        at org.junit.rules.RunRules.evaluate(RunRules.java:20)        at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)        at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)        at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)        at org.junit.runners.ParentRunner.run(ParentRunner.java:363)        at org.junit.runner.JUnitCore.run(JUnitCore.java:137)        at org.junit.runner.JUnitCore.run(JUnitCore.java:115)        at com.weibo.runfail.ClassThreadRunTest.call(Unknown Source)        at com.weibo.runfail.ClassThreadRunTest.call(Unknown Source)        at java.util.concurrent.FutureTask.run(FutureTask.java:262)        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)        at java.lang.Thread.run(Thread.java:745)"com.weibo.runfail.RunFailedCasesForServer.main()" prio=10 tid=0x00007f79fc688800 nid=0x1e6 runnable [0x00007f79b9df6000]   java.lang.Thread.State: RUNNABLE        at com.weibo.runfail.ExecuteCases.executorClassCases(Unknown Source)        at com.weibo.runfail.RunFailedCasesForServer.main(Unknown Source)        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)        at java.lang.reflect.Method.invoke(Method.java:606)        at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:293)        at java.lang.Thread.run(Thread.java:745)"Service Thread" daemon prio=10 tid=0x00007f79fc0bb800 nid=0x6246 runnable [0x0000000000000000]   java.lang.Thread.State: RUNNABLE"C2 CompilerThread1" daemon prio=10 tid=0x00007f79fc0b9000 nid=0x6245 waiting on condition [0x0000000000000000]   java.lang.Thread.State: RUNNABLE"C2 CompilerThread0" daemon prio=10 tid=0x00007f79fc0b6000 nid=0x6241 waiting on condition [0x0000000000000000]   java.lang.Thread.State: RUNNABLE"Signal Dispatcher" daemon prio=10 tid=0x00007f79fc0b4800 nid=0x623c runnable [0x0000000000000000]   java.lang.Thread.State: RUNNABLE"Finalizer" daemon prio=10 tid=0x00007f79fc08d000 nid=0x61e4 in Object.wait() [0x00007f79babea000]   java.lang.Thread.State: WAITING (on object monitor)        at java.lang.Object.wait(Native Method)        - waiting on <0x000000059555c080> (a java.lang.ref.ReferenceQueue$Lock)        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)        - locked <0x000000059555c080> (a java.lang.ref.ReferenceQueue$Lock)        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)        at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:209)"Reference Handler" daemon prio=10 tid=0x00007f79fc08b000 nid=0x61e2 in Object.wait() [0x00007f79baceb000]   java.lang.Thread.State: WAITING (on object monitor)        at java.lang.Object.wait(Native Method)        - waiting on <0x0000000595554218> (a java.lang.ref.Reference$Lock)        at java.lang.Object.wait(Object.java:503)        at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:133)        - locked <0x0000000595554218> (a java.lang.ref.Reference$Lock)"main" prio=10 tid=0x00007f79fc008800 nid=0x61ab in Object.wait() [0x00007f7a01d10000]   java.lang.Thread.State: WAITING (on object monitor)        at java.lang.Object.wait(Native Method)        - waiting on <0x00000005955440c8> (a java.lang.Thread)        at java.lang.Thread.join(Thread.java:1281)        - locked <0x00000005955440c8> (a java.lang.Thread)        at org.codehaus.mojo.exec.ExecJavaMojo.joinThread(ExecJavaMojo.java:408)        at org.codehaus.mojo.exec.ExecJavaMojo.joinNonDaemonThreads(ExecJavaMojo.java:397)        at org.codehaus.mojo.exec.ExecJavaMojo.execute(ExecJavaMojo.java:312)        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:347)        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:154)        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:213)        at org.apache.maven.cli.MavenCli.main(MavenCli.java:157)        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)        at java.lang.reflect.Method.invoke(Method.java:606)        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)"VM Thread" prio=10 tid=0x00007f79fc086800 nid=0x61dd runnable "GC task thread#0 (ParallelGC)" prio=10 tid=0x00007f79fc01e800 nid=0x61b2 runnable "GC task thread#1 (ParallelGC)" prio=10 tid=0x00007f79fc020800 nid=0x61b3 runnable "GC task thread#2 (ParallelGC)" prio=10 tid=0x00007f79fc022000 nid=0x61b4 runnable "GC task thread#3 (ParallelGC)" prio=10 tid=0x00007f79fc024000 nid=0x61b5 runnable "GC task thread#4 (ParallelGC)" prio=10 tid=0x00007f79fc026000 nid=0x61b6 runnable "GC task thread#5 (ParallelGC)" prio=10 tid=0x00007f79fc027800 nid=0x61b7 runnable "GC task thread#6 (ParallelGC)" prio=10 tid=0x00007f79fc029800 nid=0x61b8 runnable "GC task thread#7 (ParallelGC)" prio=10 tid=0x00007f79fc02b800 nid=0x61b9 runnable "GC task thread#8 (ParallelGC)" prio=10 tid=0x00007f79fc02d000 nid=0x61ba runnable "GC task thread#9 (ParallelGC)" prio=10 tid=0x00007f79fc02f000 nid=0x61bb runnable "GC task thread#10 (ParallelGC)" prio=10 tid=0x00007f79fc031000 nid=0x61bc runnable "GC task thread#11 (ParallelGC)" prio=10 tid=0x00007f79fc033000 nid=0x61be runnable "GC task thread#12 (ParallelGC)" prio=10 tid=0x00007f79fc034800 nid=0x61c0 runnable "GC task thread#13 (ParallelGC)" prio=10 tid=0x00007f79fc036800 nid=0x61c2 runnable "GC task thread#14 (ParallelGC)" prio=10 tid=0x00007f79fc038800 nid=0x61c3 runnable "GC task thread#15 (ParallelGC)" prio=10 tid=0x00007f79fc03a000 nid=0x61c4 runnable "GC task thread#16 (ParallelGC)" prio=10 tid=0x00007f79fc03c000 nid=0x61c5 runnable "GC task thread#17 (ParallelGC)" prio=10 tid=0x00007f79fc03e000 nid=0x61c6 runnable "VM Periodic Task Thread" prio=10 tid=0x00007f79fc0c6000 nid=0x624b waiting on condition JNI global references: 250

误区

一开始猜测是堆栈溢出,使用jstat,监控运行时,java进程gc情况,查看永久代达到99.83%, 一开始以为量比较大,但实际量并不大(20MB);

永久代存储了每个类的信息(包括类的名称、方法信息、字段信息)、静态变量、常量以及编译器编译后的代码等。

使用jstack查看线程栈,GC task thread#0 ~ 17 runnable 以为未退出是由于一直在执行gc操作,导致pool-2-thread-1 ~ 15线程挂起:
“pool-2-thread-15” prio=10 tid=0x00007f7918190000 nid=0x2af5 waiting on condition [0x00007f79b3efd000]
java.lang.Thread.State: WAITING (parking)。

错误的推论:gc操作导致线程挂起。

正确方式

统计整个过程数据:

这里写图片描述

程序运行数据区 Eden, Old, Perm(刚开始比例比较高,后面可用递增,占的比例逐步下降)都是没问题。

查看线程Dump:

2016-01-23 17:26:07Full thread dump Java HotSpot(TM) 64-Bit Server VM (24.60-b09 mixed mode):"RMI TCP Connection(7)-192.168.1.110" daemon prio=5 tid=0x00007fa5028aa800 nid=0x8607 runnable [0x0000700002d9d000]   java.lang.Thread.State: RUNNABLE    at java.net.SocketInputStream.socketRead0(Native Method)    at java.net.SocketInputStream.read(SocketInputStream.java:152)    at java.net.SocketInputStream.read(SocketInputStream.java:122)    at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)    at java.io.BufferedInputStream.read(BufferedInputStream.java:254)    - locked <0x00000007d64bee38> (a java.io.BufferedInputStream)    at java.io.FilterInputStream.read(FilterInputStream.java:83)    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:538)    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:811)    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:670)    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)    at java.lang.Thread.run(Thread.java:745)   Locked ownable synchronizers:    - <0x00000007d767f8b0> (a java.util.concurrent.ThreadPoolExecutor$Worker)"DestroyJavaVM" prio=5 tid=0x00007fa502000800 nid=0x1703 waiting on condition [0x0000000000000000]   java.lang.Thread.State: RUNNABLE   Locked ownable synchronizers:    - None"pool-1-thread-15" prio=5 tid=0x00007fa501096800 nid=0x8403 waiting on condition [0x0000700002c9a000]   java.lang.Thread.State: WAITING (parking)    at sun.misc.Unsafe.park(Native Method)    - parking to wait for  <0x00000007d767ffa8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)    at java.lang.Thread.run(Thread.java:745)   Locked ownable synchronizers:    - None"pool-1-thread-14" prio=5 tid=0x00007fa501096000 nid=0x8203 waiting on condition [0x0000700002b97000]   java.lang.Thread.State: WAITING (parking)    at sun.misc.Unsafe.park(Native Method)    - parking to wait for  <0x00000007d767ffa8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)    at java.lang.Thread.run(Thread.java:745)   Locked ownable synchronizers:    - None"pool-1-thread-13" prio=5 tid=0x00007fa501352000 nid=0x8003 waiting on condition [0x0000700002a94000]   java.lang.Thread.State: WAITING (parking)    at sun.misc.Unsafe.park(Native Method)    - parking to wait for  <0x00000007d767ffa8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)    at java.lang.Thread.run(Thread.java:745)   Locked ownable synchronizers:    - None"pool-1-thread-12" prio=5 tid=0x00007fa50109b000 nid=0x7e03 waiting on condition [0x0000700002991000]   java.lang.Thread.State: WAITING (parking)    at sun.misc.Unsafe.park(Native Method)    - parking to wait for  <0x00000007d767ffa8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)    at java.lang.Thread.run(Thread.java:745)   Locked ownable synchronizers:    - None"pool-1-thread-11" prio=5 tid=0x00007fa5021bc800 nid=0x7c03 waiting on condition [0x000070000288e000]   java.lang.Thread.State: WAITING (parking)    at sun.misc.Unsafe.park(Native Method)    - parking to wait for  <0x00000007d767ffa8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)    at java.lang.Thread.run(Thread.java:745)   Locked ownable synchronizers:    - None"pool-1-thread-10" prio=5 tid=0x00007fa50216c800 nid=0x7a03 waiting on condition [0x000070000278b000]   java.lang.Thread.State: WAITING (parking)    at sun.misc.Unsafe.park(Native Method)    - parking to wait for  <0x00000007d767ffa8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)    at java.lang.Thread.run(Thread.java:745)   Locked ownable synchronizers:    - None"pool-1-thread-9" prio=5 tid=0x00007fa50216b800 nid=0x7803 waiting on condition [0x0000700002688000]   java.lang.Thread.State: WAITING (parking)    at sun.misc.Unsafe.park(Native Method)    - parking to wait for  <0x00000007d767ffa8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)    at java.lang.Thread.run(Thread.java:745)   Locked ownable synchronizers:    - None"pool-1-thread-8" prio=5 tid=0x00007fa50229d800 nid=0x7603 waiting on condition [0x0000700002585000]   java.lang.Thread.State: WAITING (parking)    at sun.misc.Unsafe.park(Native Method)    - parking to wait for  <0x00000007d767ffa8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)    at java.lang.Thread.run(Thread.java:745)   Locked ownable synchronizers:    - None"pool-1-thread-7" prio=5 tid=0x00007fa502018000 nid=0x7403 waiting on condition [0x0000700002482000]   java.lang.Thread.State: WAITING (parking)    at sun.misc.Unsafe.park(Native Method)    - parking to wait for  <0x00000007d767ffa8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)    at java.lang.Thread.run(Thread.java:745)   Locked ownable synchronizers:    - None"pool-1-thread-6" prio=5 tid=0x00007fa501351800 nid=0x7203 waiting on condition [0x000070000237f000]   java.lang.Thread.State: WAITING (parking)    at sun.misc.Unsafe.park(Native Method)    - parking to wait for  <0x00000007d767ffa8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)    at java.lang.Thread.run(Thread.java:745)   Locked ownable synchronizers:    - None"pool-1-thread-5" prio=5 tid=0x00007fa502016000 nid=0x7003 waiting on condition [0x000070000227c000]   java.lang.Thread.State: WAITING (parking)    at sun.misc.Unsafe.park(Native Method)    - parking to wait for  <0x00000007d767ffa8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)    at java.lang.Thread.run(Thread.java:745)   Locked ownable synchronizers:    - None"pool-1-thread-4" prio=5 tid=0x00007fa501996000 nid=0x6e03 waiting on condition [0x0000700002179000]   java.lang.Thread.State: WAITING (parking)    at sun.misc.Unsafe.park(Native Method)    - parking to wait for  <0x00000007d767ffa8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)    at java.lang.Thread.run(Thread.java:745)   Locked ownable synchronizers:    - None"pool-1-thread-3" prio=5 tid=0x00007fa50247a000 nid=0x360b waiting on condition [0x0000700002076000]   java.lang.Thread.State: WAITING (parking)    at sun.misc.Unsafe.park(Native Method)    - parking to wait for  <0x00000007d767ffa8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)    at java.lang.Thread.run(Thread.java:745)   Locked ownable synchronizers:    - None"pool-1-thread-2" prio=5 tid=0x00007fa502283000 nid=0x3507 waiting on condition [0x0000700001f73000]   java.lang.Thread.State: WAITING (parking)    at sun.misc.Unsafe.park(Native Method)    - parking to wait for  <0x00000007d767ffa8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)    at java.lang.Thread.run(Thread.java:745)   Locked ownable synchronizers:    - None"pool-1-thread-1" prio=5 tid=0x00007fa501221000 nid=0x1307 waiting on condition [0x0000700000a31000]   java.lang.Thread.State: WAITING (parking)    at sun.misc.Unsafe.park(Native Method)    - parking to wait for  <0x00000007d767ffa8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)    at java.lang.Thread.run(Thread.java:745)   Locked ownable synchronizers:    - None"RMI TCP Connection(idle)" daemon prio=5 tid=0x00007fa502234000 nid=0x6b03 waiting on condition [0x0000700001e70000]   java.lang.Thread.State: TIMED_WAITING (parking)    at sun.misc.Unsafe.park(Native Method)    - parking to wait for  <0x0000000780c6d130> (a java.util.concurrent.SynchronousQueue$TransferStack)    at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226)    at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460)    at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:359)    at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:942)    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)    at java.lang.Thread.run(Thread.java:745)   Locked ownable synchronizers:    - None"RMI TCP Connection(2)-192.168.1.110" daemon prio=5 tid=0x00007fa501afa000 nid=0x6903 in Object.wait() [0x0000700001d6b000]   java.lang.Thread.State: TIMED_WAITING (on object monitor)    at java.lang.Object.wait(Native Method)    - waiting on <0x0000000780a634b8> (a com.sun.jmx.remote.internal.ArrayNotificationBuffer)    at com.sun.jmx.remote.internal.ArrayNotificationBuffer.fetchNotifications(ArrayNotificationBuffer.java:449)    - locked <0x0000000780a634b8> (a com.sun.jmx.remote.internal.ArrayNotificationBuffer)    at com.sun.jmx.remote.internal.ArrayNotificationBuffer$ShareBuffer.fetchNotifications(ArrayNotificationBuffer.java:227)    at com.sun.jmx.remote.internal.ServerNotifForwarder.fetchNotifs(ServerNotifForwarder.java:275)    at javax.management.remote.rmi.RMIConnectionImpl$3.run(RMIConnectionImpl.java:1289)    at javax.management.remote.rmi.RMIConnectionImpl$3.run(RMIConnectionImpl.java:1287)    at javax.management.remote.rmi.RMIConnectionImpl.fetchNotifications(RMIConnectionImpl.java:1293)    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)    at java.lang.reflect.Method.invoke(Method.java:606)    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322)    at sun.rmi.transport.Transport$1.run(Transport.java:177)    at sun.rmi.transport.Transport$1.run(Transport.java:174)    at java.security.AccessController.doPrivileged(Native Method)    at sun.rmi.transport.Transport.serviceCall(Transport.java:173)    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:556)    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:811)    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:670)    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)    at java.lang.Thread.run(Thread.java:745)   Locked ownable synchronizers:    - <0x0000000780c6d220> (a java.util.concurrent.ThreadPoolExecutor$Worker)"JMX server connection timeout 22" daemon prio=5 tid=0x00007fa5011ae800 nid=0x6703 in Object.wait() [0x0000700001c6a000]   java.lang.Thread.State: TIMED_WAITING (on object monitor)    at java.lang.Object.wait(Native Method)    - waiting on <0x0000000780c65600> (a [I)    at com.sun.jmx.remote.internal.ServerCommunicatorAdmin$Timeout.run(ServerCommunicatorAdmin.java:168)    - locked <0x0000000780c65600> (a [I)    at java.lang.Thread.run(Thread.java:745)   Locked ownable synchronizers:    - None"RMI Scheduler(0)" daemon prio=5 tid=0x00007fa5011b6000 nid=0x6503 waiting on condition [0x0000700001b67000]   java.lang.Thread.State: TIMED_WAITING (parking)    at sun.misc.Unsafe.park(Native Method)    - parking to wait for  <0x0000000780771aa0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)    at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226)    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2082)    at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1090)    at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:807)    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)    at java.lang.Thread.run(Thread.java:745)   Locked ownable synchronizers:    - None"RMI TCP Connection(idle)" daemon prio=5 tid=0x00007fa502233800 nid=0x6303 waiting on condition [0x0000700001a64000]   java.lang.Thread.State: TIMED_WAITING (parking)    at sun.misc.Unsafe.park(Native Method)    - parking to wait for  <0x0000000780c6d130> (a java.util.concurrent.SynchronousQueue$TransferStack)    at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226)    at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460)    at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:359)    at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:942)    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)    at java.lang.Thread.run(Thread.java:745)   Locked ownable synchronizers:    - None"RMI TCP Accept-0" daemon prio=5 tid=0x00007fa501199800 nid=0x6103 runnable [0x0000700001961000]   java.lang.Thread.State: RUNNABLE    at java.net.PlainSocketImpl.socketAccept(Native Method)    at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:398)    at java.net.ServerSocket.implAccept(ServerSocket.java:530)    at java.net.ServerSocket.accept(ServerSocket.java:498)    at sun.management.jmxremote.LocalRMIServerSocketFactory$1.accept(LocalRMIServerSocketFactory.java:52)    at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:388)    at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:360)    at java.lang.Thread.run(Thread.java:745)   Locked ownable synchronizers:    - None"Attach Listener" daemon prio=5 tid=0x00007fa502223800 nid=0x5f03 waiting on condition [0x0000000000000000]   java.lang.Thread.State: RUNNABLE   Locked ownable synchronizers:    - None"C3P0PooledConnectionPoolManager[identityToken->1hge1669eugpk64fcbobh|77ae020]-HelperThread-#5" daemon prio=5 tid=0x00007fa501933800 nid=0x5d03 runnable [0x000070000175a000]   java.lang.Thread.State: RUNNABLE    at java.net.SocketInputStream.socketRead0(Native Method)    at java.net.SocketInputStream.read(SocketInputStream.java:152)    at java.net.SocketInputStream.read(SocketInputStream.java:122)    at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:100)    at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:143)    at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:173)    - locked <0x00000007d6fae6d0> (a com.mysql.jdbc.util.ReadAheadInputStream)    at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2911)    at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3337)    at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3327)    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3814)    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2435)    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2582)    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2526)    - locked <0x00000007d6d175c8> (a com.mysql.jdbc.JDBC4Connection)    at com.mysql.jdbc.ConnectionImpl.setAutoCommit(ConnectionImpl.java:4846)    - locked <0x00000007d6d175c8> (a com.mysql.jdbc.JDBC4Connection)    at com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3375)    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2278)    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2064)    - locked <0x00000007d6d175c8> (a com.mysql.jdbc.JDBC4Connection)    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:790)    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)    at sun.reflect.GeneratedConstructorAccessor11.newInstance(Unknown Source)    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)    at com.mysql.jdbc.Util.handleNewInstance(Util.java:377)    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:395)    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325)    at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175)    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220)    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206)    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203)    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1138)    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1125)    at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44)    at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1870)    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)   Locked ownable synchronizers:    - None"C3P0PooledConnectionPoolManager[identityToken->1hge1669eugpk64fcbobh|77ae020]-HelperThread-#4" daemon prio=5 tid=0x00007fa50215a800 nid=0x5b03 runnable [0x0000700001657000]   java.lang.Thread.State: RUNNABLE    at java.net.SocketInputStream.socketRead0(Native Method)    at java.net.SocketInputStream.read(SocketInputStream.java:152)    at java.net.SocketInputStream.read(SocketInputStream.java:122)    at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:100)    at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:143)    at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:173)    - locked <0x00000007d6fd9ae0> (a com.mysql.jdbc.util.ReadAheadInputStream)    at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2911)    at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3337)    at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3327)    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3814)    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2435)    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2582)    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2526)    - locked <0x00000007d6fcfdb0> (a com.mysql.jdbc.JDBC4Connection)    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2484)    at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1446)    - locked <0x00000007d6fcfdb0> (a com.mysql.jdbc.JDBC4Connection)    at com.mysql.jdbc.ConnectionImpl.loadServerVariables(ConnectionImpl.java:3844)    at com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3268)    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2278)    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2064)    - locked <0x00000007d6fcfdb0> (a com.mysql.jdbc.JDBC4Connection)    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:790)    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)    at sun.reflect.GeneratedConstructorAccessor11.newInstance(Unknown Source)    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)    at com.mysql.jdbc.Util.handleNewInstance(Util.java:377)    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:395)    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325)    at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175)    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220)    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206)    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203)    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1138)    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1125)    at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44)    at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1870)    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)   Locked ownable synchronizers:    - None"C3P0PooledConnectionPoolManager[identityToken->1hge1669eugpk64fcbobh|77ae020]-HelperThread-#3" daemon prio=5 tid=0x00007fa501933000 nid=0x5903 runnable [0x0000700001554000]   java.lang.Thread.State: RUNNABLE    at java.net.SocketInputStream.socketRead0(Native Method)    at java.net.SocketInputStream.read(SocketInputStream.java:152)    at java.net.SocketInputStream.read(SocketInputStream.java:122)    at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:100)    at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:143)    at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:173)    - locked <0x00000007d6e0a7a8> (a com.mysql.jdbc.util.ReadAheadInputStream)    at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2911)    at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:559)    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1013)    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2234)    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2265)    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2064)    - locked <0x00000007d6c5e778> (a com.mysql.jdbc.JDBC4Connection)    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:790)    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)    at sun.reflect.GeneratedConstructorAccessor11.newInstance(Unknown Source)    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)    at com.mysql.jdbc.Util.handleNewInstance(Util.java:377)    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:395)    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325)    at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175)    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220)    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206)    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203)    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1138)    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1125)    at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44)    at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1870)    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)   Locked ownable synchronizers:    - None"C3P0PooledConnectionPoolManager[identityToken->1hge1669eugpk64fcbobh|77ae020]-HelperThread-#2" daemon prio=5 tid=0x00007fa501a29800 nid=0x5703 runnable [0x0000700001451000]   java.lang.Thread.State: RUNNABLE    at java.net.SocketInputStream.socketRead0(Native Method)    at java.net.SocketInputStream.read(SocketInputStream.java:152)    at java.net.SocketInputStream.read(SocketInputStream.java:122)    at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:100)    at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:143)    at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:173)    - locked <0x00000007d6fde548> (a com.mysql.jdbc.util.ReadAheadInputStream)    at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2911)    at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3337)    at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3327)    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3814)    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2435)    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2582)    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2526)    - locked <0x00000007d6ec8a10> (a com.mysql.jdbc.JDBC4Connection)    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2484)    at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1446)    - locked <0x00000007d6ec8a10> (a com.mysql.jdbc.JDBC4Connection)    at com.mysql.jdbc.ConnectionImpl.loadServerVariables(ConnectionImpl.java:3844)    at com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3268)    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2278)    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2064)    - locked <0x00000007d6ec8a10> (a com.mysql.jdbc.JDBC4Connection)    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:790)    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)    at sun.reflect.GeneratedConstructorAccessor11.newInstance(Unknown Source)    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)    at com.mysql.jdbc.Util.handleNewInstance(Util.java:377)    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:395)    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325)    at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175)    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220)    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206)    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203)    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1138)    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1125)    at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44)    at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1870)    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)   Locked ownable synchronizers:    - None"C3P0PooledConnectionPoolManager[identityToken->1hge1669eugpk64fcbobh|77ae020]-HelperThread-#1" daemon prio=5 tid=0x00007fa501a28800 nid=0x5503 runnable [0x000070000134e000]   java.lang.Thread.State: RUNNABLE    at java.net.SocketInputStream.socketRead0(Native Method)    at java.net.SocketInputStream.read(SocketInputStream.java:152)    at java.net.SocketInputStream.read(SocketInputStream.java:122)    at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:100)    at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:143)    at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:173)    - locked <0x00000007d6edba38> (a com.mysql.jdbc.util.ReadAheadInputStream)    at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2911)    at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3337)    at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3327)    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3814)    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2435)    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2582)    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2526)    - locked <0x00000007d6ed1c98> (a com.mysql.jdbc.JDBC4Connection)    at com.mysql.jdbc.ConnectionImpl.setupServerForTruncationChecks(ConnectionImpl.java:5176)    at com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3444)    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2278)    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2064)    - locked <0x00000007d6ed1c98> (a com.mysql.jdbc.JDBC4Connection)    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:790)    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)    at sun.reflect.GeneratedConstructorAccessor11.newInstance(Unknown Source)    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)    at com.mysql.jdbc.Util.handleNewInstance(Util.java:377)    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:395)    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325)    at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175)    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220)    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206)    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203)    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1138)    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1125)    at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44)    at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1870)    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)   Locked ownable synchronizers:    - None"C3P0PooledConnectionPoolManager[identityToken->1hge1669eugpk64fcbobh|77ae020]-HelperThread-#0" daemon prio=5 tid=0x00007fa5020ff800 nid=0x5303 runnable [0x000070000124b000]   java.lang.Thread.State: RUNNABLE    at java.net.SocketInputStream.socketRead0(Native Method)    at java.net.SocketInputStream.read(SocketInputStream.java:152)    at java.net.SocketInputStream.read(SocketInputStream.java:122)    at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:100)    at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:143)    at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:173)    - locked <0x00000007d70143c0> (a com.mysql.jdbc.util.ReadAheadInputStream)    at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2911)    at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3337)    at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3327)    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3814)    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2435)    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2582)    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2526)    - locked <0x00000007d6ff3fd8> (a com.mysql.jdbc.JDBC4Connection)    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2484)    at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1446)    - locked <0x00000007d6ff3fd8> (a com.mysql.jdbc.JDBC4Connection)    at com.mysql.jdbc.ConnectionImpl.loadServerVariables(ConnectionImpl.java:3828)    at com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3268)    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2278)    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2064)    - locked <0x00000007d6ff3fd8> (a com.mysql.jdbc.JDBC4Connection)    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:790)    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)    at sun.reflect.GeneratedConstructorAccessor11.newInstance(Unknown Source)    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)    at com.mysql.jdbc.Util.handleNewInstance(Util.java:377)    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:395)    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325)    at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175)    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220)    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206)    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203)    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1138)    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1125)    at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44)    at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1870)    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)   Locked ownable synchronizers:    - None"C3P0PooledConnectionPoolManager[identityToken->1hge1669eugpk64fcbobh|77ae020]-AdminTaskTimer" daemon prio=5 tid=0x00007fa50106f000 nid=0x5103 in Object.wait() [0x0000700001149000]   java.lang.Thread.State: TIMED_WAITING (on object monitor)    at java.lang.Object.wait(Native Method)    - waiting on <0x0000000780b0d5b0> (a java.util.TaskQueue)    at java.util.TimerThread.mainLoop(Timer.java:552)    - locked <0x0000000780b0d5b0> (a java.util.TaskQueue)    at java.util.TimerThread.run(Timer.java:505)   Locked ownable synchronizers:    - None"Abandoned connection cleanup thread" daemon prio=5 tid=0x00007fa5019cf000 nid=0x4f07 in Object.wait() [0x0000700001046000]   java.lang.Thread.State: TIMED_WAITING (on object monitor)    at java.lang.Object.wait(Native Method)    - waiting on <0x0000000780688d88> (a java.lang.ref.ReferenceQueue$Lock)    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)    - locked <0x0000000780688d88> (a java.lang.ref.ReferenceQueue$Lock)    at com.mysql.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:43)   Locked ownable synchronizers:    - None"Service Thread" daemon prio=5 tid=0x00007fa502853800 nid=0x4703 runnable [0x0000000000000000]   java.lang.Thread.State: RUNNABLE   Locked ownable synchronizers:    - None"C2 CompilerThread1" daemon prio=5 tid=0x00007fa502853000 nid=0x4503 waiting on condition [0x0000000000000000]   java.lang.Thread.State: RUNNABLE   Locked ownable synchronizers:    - None"C2 CompilerThread0" daemon prio=5 tid=0x00007fa50205b000 nid=0x4303 waiting on condition [0x0000000000000000]   java.lang.Thread.State: RUNNABLE   Locked ownable synchronizers:    - None"Signal Dispatcher" daemon prio=5 tid=0x00007fa502842000 nid=0x410f runnable [0x0000000000000000]   java.lang.Thread.State: RUNNABLE   Locked ownable synchronizers:    - None"Finalizer" daemon prio=5 tid=0x00007fa502014000 nid=0x3003 in Object.wait() [0x000070000092e000]   java.lang.Thread.State: WAITING (on object monitor)    at java.lang.Object.wait(Native Method)    - waiting on <0x0000000780bfaa18> (a java.lang.ref.ReferenceQueue$Lock)    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)    - locked <0x0000000780bfaa18> (a java.lang.ref.ReferenceQueue$Lock)    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)    at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:209)   Locked ownable synchronizers:    - None"Reference Handler" daemon prio=5 tid=0x00007fa502013000 nid=0x2e03 in Object.wait() [0x000070000082b000]   java.lang.Thread.State: WAITING (on object monitor)    at java.lang.Object.wait(Native Method)    - waiting on <0x0000000780bfa610> (a java.lang.ref.Reference$Lock)    at java.lang.Object.wait(Object.java:503)    at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:133)    - locked <0x0000000780bfa610> (a java.lang.ref.Reference$Lock)   Locked ownable synchronizers:    - None"VM Thread" prio=5 tid=0x00007fa502831000 nid=0x2c03 runnable "GC task thread#0 (ParallelGC)" prio=5 tid=0x00007fa502801800 nid=0x2403 runnable "GC task thread#1 (ParallelGC)" prio=5 tid=0x00007fa50200a800 nid=0x2603 runnable "GC task thread#2 (ParallelGC)" prio=5 tid=0x00007fa501012800 nid=0x2803 runnable "GC task thread#3 (ParallelGC)" prio=5 tid=0x00007fa502802000 nid=0x2a03 runnable "VM Periodic Task Thread" prio=5 tid=0x00007fa502020000 nid=0x4903 waiting on condition JNI global references: 254

排除gc的问题,
查看线程池pool-1中thread-1 ~ 15 异常堆栈信息:

"pool-1-thread-15" prio=5 tid=0x00007fa501096800 nid=0x8403 waiting on condition [0x0000700002c9a000]   java.lang.Thread.State: WAITING (parking)    at sun.misc.Unsafe.park(Native Method)    - parking to wait for  <0x00000007d767ffa8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)    at java.lang.Thread.run(Thread.java:745)   Locked ownable synchronizers:    - None

线程挂起原因:
parking to wait for <0x00000007d767ffa8>

java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)

猜测可能的原因跟线程池有关,通过定位到执行的用例,发现某个用例,使用线程池构造场景,未关闭线程池。

3.解决方案

将线程池执行结束后,关闭线程池:

executorService.shutdownNow();

修改后,正常退出。

4.心得

一定要定位到具体的问题代码,通过排除法,验证到底是哪块代码导致问题复现;再去观察各项指标:gc, 线程Dump等,通过统计的信息,猜测可能的原因,根据各种原因,逐行走读有问题的代码。

0 0
原创粉丝点击