多线程Java应用程序只使用一个核心而卡住了

时间:2015-01-12 19:40:13

标签: java linux multithreading tomcat tomcat7

  • 我们在Linux环境(vm)中运行多线程Java应用程序。我们有30个核心。 Java(TM)SE运行时环境(版本1.7.0_45-b18)

  • Linux版本2.6.32-279.5.1.el6.x86_64(mockbuild@x86-004.build.bos.redhat.com)(gcc版本4.4.6 20120305(Red Hat 4.4.6-4) (GCC))#1 SMP Tue 7月24日 2012年12月13:57:35

  • 我们正在Tomcat(7.0.42)

  • 中运行我们的应用程序
  • 我们看到的是,有时只有一个处理器被大约100%使用,在这种情况下,应用程序变得无响应并需要重新启动,其余核心似乎完全空闲,而另一个它们似乎被广泛使用。

  • 我们得到了一些线程转储(我们必须使用kill -3来获取它们,因为jstack遇到连接错误),尽管它们没有显示任何明显的死锁或问题。

  • 当应用程序无响应时,我们无法使用visual vm或jconsole附加到它。

  • 我们在java-monitor.com http://java-monitor.com/forum/showthread.php?t=317

  • 中查看了这篇文章
  • 在一些情况下,我们在重启几分钟内就发现了这种行为。

  • 按照下面提供的一些说明,我们确定了使用CPU的线程,它是“VM线程”。

  • 我们将jvm更新为最新的可用版本: Java(TM)SE运行时环境(版本1.7.0_71-b14) Java HotSpot(TM)64位服务器VM(内置24.71-b01,混合模式) 从那时起,我们再次无法看到这个问题,尽管在某些情况下,它似乎需要数周才会出现。

  • 在过去几个月中,我们在重新启动应用程序几分钟后收到以下消息

    #
    # A fatal error has been detected by the Java Runtime Environment:
    #
    #  SIGSEGV (0xb) at pc=0x00007fbe71501d19, pid=18022, tid=139946328471296
    #
    # JRE version: Java(TM) SE Runtime Environment (7.0_45-b18) (build 1.7.0_45-b18)
    # Java VM: Java HotSpot(TM) 64-Bit Server VM (24.45-b08 mixed mode linux-amd64 )
    # Problematic frame:
    # J  java.lang.management.ThreadInfo.<init>(Ljava/lang/Thread;ILjava/lang/Object;Ljava/lang/Thread;JJJJ[Ljava/lang/StackTraceElement;[Ljava/lang/Object;[I[Ljava/lang/Object;)V
    #
    #
    # Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
    #
    # If you would like to submit a bug report, please visit:
    #   http://bugreport.sun.com/bugreport/crash.jsp
    #
    

在另一个案例中:

    #
    # A fatal error has been detected by the Java Runtime Environment:
    #
    #  SIGSEGV (0xb) at pc=0x00007f1c2f0debec, pid=16493, tid=139756998551296
    #
    # JRE version: Java(TM) SE Runtime Environment (7.0_45-b18) (build 1.7.0_45-b18)
    # Java VM: Java HotSpot(TM) 64-Bit Server VM (24.45-b08 mixed mode linux-amd64 )
    # Problematic frame:
    # V  [libjvm.so+0x756bec]  PhaseIdealLoop::build_loop_late_post(Node*)+0x13c
    #
    # Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
    #
    # If you would like to submit a bug report, please visit:
    #   http://bugreport.sun.com/bugreport/crash.jsp
    #

我很感激任何想法或建议。 提前谢谢。

0 个答案:

没有答案