多线程性能问题,Linux下部署跑一会就停了,有日志

BecksHwang 2016-06-22 04:55:55
项目跑了一个小时就停了,关闭tomcat有如下日志,有没有大神看看是哪里的问题,需要源码的问我。
日志如下:
Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.91-b14 mixed mode):

"DestroyJavaVM" #99 prio=5 os_prio=0 tid=0x00007ff88049b800 nid=0xd83 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

"Keep-Alive-SocketCleaner" #96 daemon prio=8 os_prio=0 tid=0x00007ff84c0b6800 nid=0xdf4 in Object.wait() [0x00007ff827cf9000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at sun.net.www.http.KeepAliveStreamCleaner.run(KeepAliveStreamCleaner.java:101)
- locked <0x00000000c6a14a80> (a sun.net.www.http.KeepAliveStreamCleaner)
at java.lang.Thread.run(Thread.java:745)

"http-bio-8080-exec-7" #92 daemon prio=5 os_prio=0 tid=0x00007ff82c0e7800 nid=0xdef runnable [0x00007ff8280fd000]
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
at java.net.SocketInputStream.read(SocketInputStream.java:170)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:519)
at org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:504)
at org.apache.coyote.http11.Http11Processor.setRequestLineReadTimeout(Http11Processor.java:168)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:990)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
- locked <0x00000000f26580f8> (a org.apache.tomcat.util.net.SocketWrapper)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)

"pool-3-thread-1" #79 prio=5 os_prio=0 tid=0x00007ff82ccd5000 nid=0xddf waiting on condition [0x00007ff828de0000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000c8eb81b0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

"MySQL Statement Cancellation Timer" #78 daemon prio=5 os_prio=0 tid=0x00007ff82c26b800 nid=0xddd in Object.wait() [0x00007ff829ae1000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:502)
at java.util.TimerThread.mainLoop(Timer.java:526)
- locked <0x00000000c76595e0> (a java.util.TaskQueue)
at java.util.TimerThread.run(Timer.java:505)

"Timer-4" #77 daemon prio=5 os_prio=0 tid=0x00007ff82c4db000 nid=0xddc in Object.wait() [0x00007ff829be2000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.util.TimerThread.mainLoop(Timer.java:552)
- locked <0x00000000c77a3460> (a java.util.TaskQueue)
at java.util.TimerThread.run(Timer.java:505)

"Timer-3" #24 daemon prio=5 os_prio=0 tid=0x00007ff8458f8000 nid=0xda7 in Object.wait() [0x00007ff851ad7000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.util.TimerThread.mainLoop(Timer.java:552)
- locked <0x00000000c626caa8> (a java.util.TaskQueue)
at java.util.TimerThread.run(Timer.java:505)

"pool-2-thread-1" #23 prio=5 os_prio=0 tid=0x00007ff82c5cf800 nid=0xda6 waiting on condition [0x00007ff8683be000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000c5d75670> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

"com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2" #21 daemon prio=5 os_prio=0 tid=0x00007ff82c4c2000 nid=0xd9a in Object.wait() [0x00007ff8687c0000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:534)
- locked <0x00000000c5d75f60> (a com.mchange.v2.async.ThreadPoolAsynchronousRunner)

"com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1" #20 daemon prio=5 os_prio=0 tid=0x00007ff82c4c1800 nid=0xd99 in Object.wait() [0x00007ff8688c1000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:534)
- locked <0x00000000c5d75f60> (a com.mchange.v2.async.ThreadPoolAsynchronousRunner)

"com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0" #19 daemon prio=5 os_prio=0 tid=0x00007ff82c4f2800 nid=0xd98 in Object.wait() [0x00007ff8689c2000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:534)
- locked <0x00000000c5d75f60> (a com.mchange.v2.async.ThreadPoolAsynchronousRunner)

"Timer-1" #18 daemon prio=5 os_prio=0 tid=0x00007ff82c421000 nid=0xd97 in Object.wait() [0x00007ff868ac3000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.util.TimerThread.mainLoop(Timer.java:552)
- locked <0x00000000c5d7b2d8> (a java.util.TaskQueue)
at java.util.TimerThread.run(Timer.java:505)

"MySQL Statement Cancellation Timer" #17 daemon prio=5 os_prio=0 tid=0x00007ff82c3f2800 nid=0xd95 in Object.wait() [0x00007ff868fc4000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000c5acc428> (a java.util.TaskQueue)
at java.lang.Object.wait(Object.java:502)
at java.util.TimerThread.mainLoop(Timer.java:526)
- locked <0x00000000c5acc428> (a java.util.TaskQueue)
at java.util.TimerThread.run(Timer.java:505)

"com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2" #16 daemon prio=5 os_prio=0 tid=0x00007ff82c367000 nid=0xd94 in Object.wait() [0x00007ff8690c5000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:534)
- locked <0x00000000c5accae8> (a com.mchange.v2.async.ThreadPoolAsynchronousRunner)

"com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1" #15 daemon prio=5 os_prio=0 tid=0x00007ff82c39d800 nid=0xd93 in Object.wait() [0x00007ff8691c6000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:534)
- locked <0x00000000c5accae8> (a com.mchange.v2.async.ThreadPoolAsynchronousRunner)

"com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0" #14 daemon prio=5 os_prio=0 tid=0x00007ff82c39c000 nid=0xd92 in Object.wait() [0x00007ff8692c7000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:534)
- locked <0x00000000c5accae8> (a com.mchange.v2.async.ThreadPoolAsynchronousRunner)

"Timer-0" #13 daemon prio=5 os_prio=0 tid=0x00007ff82c362000 nid=0xd91 in Object.wait() [0x00007ff8693c8000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.util.TimerThread.mainLoop(Timer.java:552)
- locked <0x00000000c5acd610> (a java.util.TaskQueue)
at java.util.TimerThread.run(Timer.java:505)

"Service Thread" #7 daemon prio=9 os_prio=0 tid=0x00007ff8800b9000 nid=0xd8c runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

"C1 CompilerThread1" #6 daemon prio=9 os_prio=0 tid=0x00007ff8800b6000 nid=0xd8b waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

"C2 CompilerThread0" #5 daemon prio=9 os_prio=0 tid=0x00007ff8800b3000 nid=0xd8a waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" #4 daemon prio=9 os_prio=0 tid=0x00007ff8800b1800 nid=0xd89 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
...全文
490 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
小灰狼 2016-06-23
  • 打赏
  • 举报
回复
再想办法检测一下,是线程真的停下来了,还是因为死锁了 我感觉死锁的可能性比较大。 如果有访问数据库,看看是不是连接池用尽了,这时可以再写个简单的 jsp 尝试得到数据库连接,如果不能获取,则表明你的连接被占用后没有释放,这要自己去查了 如果有对资源的同步,比如消费者、生产者队列等,就要仔细检查同步机制,定位到死锁的位置
BecksHwang 2016-06-22
  • 打赏
  • 举报
回复
感谢回复,是线程停了,因为同一个tomcat下跑着其他项目,其他项目还在正常运作。不太好观察,目前看的到现象就是项目跑了一个小时左右就停了。
小灰狼 2016-06-22
  • 打赏
  • 举报
回复
先判断一下,是你的TOMCAT停了,还是只有你的几个线程停了 从日志里看不出来什么问题,可能本人水平有限 找问题的办法可以是 通过减少线程数、增加线程数,观察对系统造成的变化 屏蔽一些对资源(数据库连接、对象同步等)的代码,然后运行观察之

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧