项目中使用的是jdk1.6.0_13和Tomcat6.0.18,使用ssh框架,系统一直稳定运行,最近突然出现tomcat挂死的问题,现象是访问页面时浏览器一直处于等待状态,查看服务器的tomcat进程貌似一切正常,使用jstack打印不了,必须使用jstack -F pid才能打出有限的信息,使用jvisualvm等都连不上(已经配置好启动参数了),感觉好像是GC线程挂死了,导致其他java线程处于阻塞状态,请各位高人看看是否遇到过或者是否有解决的思路,不胜感激。

解决方案 »

  1.   

    Deadlock Detection:
    No deadlocks found.
    Thread 26457: (state = IN_NATIVE)
     - java.lang.UNIXProcess.forkAndExec(byte[], byte[], int, byte[], int, byte[], boolean, java.io.FileDescriptor, java.io.FileDescriptor, java.io.FileDescriptor) @bci=0 (Interpreted frame)
     - java.lang.UNIXProcess.access$500(java.lang.UNIXProcess, byte[], byte[], int, byte[], int, byte[], boolean, java.io.FileDescriptor, java.io.FileDescriptor, java.io.FileDescriptor) @bci=18 (Interpreted frame)
     - java.lang.UNIXProcess$1$1.run() @bci=93 (Interpreted frame)
    Thread 22531: (state = BLOCKED)
     - java.lang.Object.wait(long) @bci=0 (Interpreted frame)
     - com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run() @bci=34, line=534 (Compiled frame)
    Thread 22530: (state = BLOCKED)
     - java.lang.Object.wait(long) @bci=0 (Interpreted frame)
     - com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run() @bci=34, line=534 (Compiled frame)
    Thread 22529: (state = BLOCKED)
     - java.lang.Object.wait(long) @bci=0 (Interpreted frame)
     - com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run() @bci=34, line=534 (Compiled frame)
      

  2.   

    Thread 22509: (state = BLOCKED)
     - java.lang.Object.wait(long) @bci=0 (Interpreted frame)
     - com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run() @bci=34, line=534 (Compiled frame)
    Thread 22508: (state = BLOCKED)
     - java.lang.Object.wait(long) @bci=0 (Interpreted frame)
     - com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run() @bci=34, line=534 (Compiled frame)
    Thread 22507: (state = BLOCKED)
     - java.lang.Object.wait(long) @bci=0 (Interpreted frame)
     - com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run() @bci=34, line=534 (Compiled frame)
    Thread 19356: (state = BLOCKED)
     - java.lang.Object.wait(long) @bci=0 (Interpreted frame)
     - com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run() @bci=34, line=534 (Compiled frame)
    Thread 19355: (state = BLOCKED)
     - java.lang.Object.wait(long) @bci=0 (Interpreted frame)
     - com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run() @bci=34, line=534 (Compiled frame)
    Thread 19354: (state = BLOCKED)
     - java.lang.Object.wait(long) @bci=0 (Interpreted frame)
     - com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run() @bci=34, line=534 (Compiled frame)
      

  3.   

    Thread 6523: (state = BLOCKED)
     - sun.misc.Unsafe.park(boolean, long) @bci=0 (Interpreted frame)
     - java.util.concurrent.locks.LockSupport.parkNanos(java.lang.Object, long) @bci=20 (Interpreted frame)
     - java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(java.util.concurrent.SynchronousQueue$TransferStack$SNode, boolean, long) @bci=174 (Compiled frame)
     - java.util.concurrent.SynchronousQueue$TransferStack.transfer(java.lang.Object, boolean, long) @bci=102 (Interpreted frame)
     - java.util.concurrent.SynchronousQueue.poll(long, java.util.concurrent.TimeUnit) @bci=11 (Interpreted frame)
     - java.util.concurrent.ThreadPoolExecutor.getTask() @bci=62 (Interpreted frame)
     - java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=18 (Interpreted frame)
     - java.lang.Thread.run() @bci=11 (Interpreted frame)
      

  4.   

    你的问题我遇到过后来解决了,你有几个地方弄错了,你加我QQ我给你发一个不卡死的,你自己对照一下应该能明白的。
    441912516  pns
      

  5.   

    我遇到过类似的问题,你的问题有可能是:1. 数据库连接问题,请问是单例模式吗
    2. 集群的时候,hibernate load 方法
    3. 最大值加1问题!导致线程出错!
    有答案后请楼主贴出来,造福人类,谢谢