gpt4 book ai didi

java - 包含处于 RUNNABLE 状态且没有堆栈的线程的线程转储

转载 作者:行者123 更新时间:2023-11-29 09:28:56 25 4
gpt4 key购买 nike

在使用 CPU 的高负载应用程序上进行线程转储,我看到很多线程处于这种状态:

"ajp-executor-threads - XXXXXX" prio=10 tid=0x00002b04b8b33801 nid=0x5327 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

对我来说真正奇怪的是根本没有堆栈跟踪,ajp-thread 的总数高于配置的ma​​x-threads(下面)

它发生在应用程序运行于:

  • JBoss 7
  • Java 7u75
  • 红帽 5.11
  • 在 VMWare Enterprise/vSphere 5.5 上运行

执行器的配置是:

 <subsystem xmlns="urn:jboss:domain:threads:1.1">
<bounded-queue-thread-pool name="ajp-executor">
<core-threads count="32"/>
<queue-length count="1"/>
<max-threads count="300"/>
<keepalive-time time="5" unit="seconds"/>
</bounded-queue-thread-pool>
</subsystem>

请注意,此主机上的负载非常高:

  • CPU 达到 70%

  • 负载为 4(== vCPU 数量)

请注意这些线程不是空闲线程,因为空闲线程具有此堆栈跟踪:

 "Reference Handler" daemon prio=5 tid=0x00007f92cb00e800 nid=0x3703 in Object.wait() [0x000000012057e000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000007aaa84470> (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 <0x00000007aaa84470> (a java.lang.ref.Reference$Lock)

最佳答案

经过进一步分析,我发现问题是由于通过以下方式启用了远程调试:

-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=XXXXXXX

这解释了线程转储中这些奇怪的空堆栈跟踪。

关于java - 包含处于 RUNNABLE 状态且没有堆栈的线程的线程转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31193108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com