gpt4 book ai didi

java - 为什么这个 Java 进程无法终止?

转载 作者:IT王子 更新时间:2023-10-29 00:00:26 25 4
gpt4 key购买 nike

我在构建服务器上遇到间歇性问题,其中构建中的 Java 进程以某种方式无法终止并且似乎永远继续运行(使用 100% 的 CPU)(我已经看到它运行了 2 天以上)周末通常需要大约 10 分钟)。 kill -9 pid 似乎是停止进程的唯一方法。

我试过在进程上调用 kill -QUIT pid,但它似乎没有产生任何到 STDOUT 的堆栈跟踪(也许它没有响应信号?)。不带 -F force 选项的 jstack 似乎无法连接到正在运行的 JVM,但使用 force 选项时它确实会产生下面的输出。

不幸的是,即使有了那个堆栈跟踪,我也看不到任何明显的进一步调查路径。

据我所知,它显示了两个运行 Object.wait 的“BLOCKED”线程(它们的堆栈似乎只包含核心 Java 代码,与我们无关),第三个是没有堆栈输出的“IN_VM”。

我应该采取什么步骤来收集有关问题原因的更多信息(或者更好的是,我该如何解决它)?

$ /opt/jdk1.6.0_29/bin/jstack -l -F 5546Attaching to process ID 5546, please wait...Debugger attached successfully.Server compiler detected.JVM version is 20.4-b02Deadlock Detection:No deadlocks found.Finding object size using Printezis bits and skipping over...Thread 5555: (state = BLOCKED)Locked ownable synchronizers:    - NoneThread 5554: (state = BLOCKED) - java.lang.Object.wait(long) @bci=0 (Interpreted frame) - java.lang.ref.ReferenceQueue.remove(long) @bci=44, line=118 (Interpreted frame) - java.lang.ref.ReferenceQueue.remove() @bci=2, line=134 (Interpreted frame) - java.lang.ref.Finalizer$FinalizerThread.run() @bci=3, line=159 (Interpreted frame)Locked ownable synchronizers:    - NoneThread 5553: (state = BLOCKED) - java.lang.Object.wait(long) @bci=0 (Interpreted frame) - java.lang.Object.wait() @bci=2, line=485 (Interpreted frame) - java.lang.ref.Reference$ReferenceHandler.run() @bci=46, line=116 (Interpreted frame)Locked ownable synchronizers:    - NoneThread 5548: (state = IN_VM)Locked ownable synchronizers:    - None

(Java version 1.6.0 update 29, running on Scientific Linux release 6.0)

Update:

Running strace -f -p 894 produces a seemingly endless stream of...

[pid   900] sched_yield()               = 0
[pid 900] sched_yield() = 0
...

然后当 Ctrl-Cd 时

Process 894 detached
...
Process 900 detached
...
Process 909 detached

jmap -histo 894 没有连接但是 jmap -F -histo 894 返回...

Attaching to process ID 894, please wait...Debugger attached successfully.Server compiler detected.JVM version is 20.4-b02Iterating over heap. This may take a while...Finding object size using Printezis bits and skipping over...Finding object size using Printezis bits and skipping over...Object Histogram:num       #instances    #bytes  Class description--------------------------------------------------------------------------1:      11356   1551744 * MethodKlass2:      11356   1435944 * ConstMethodKlass3:      914 973488  * ConstantPoolKlass4:      6717    849032  char[]5:      16987   820072  * SymbolKlass6:      2305    686048  byte[]7:      914 672792  * InstanceKlassKlass8:      857 650312  * ConstantPoolCacheKlass9:      5243    167776  java.lang.String10:     1046    108784  java.lang.Class11:     1400    87576   short[]12:     1556    84040   * System ObjArray13:     1037    64584   int[]14:     103 60152   * ObjArrayKlassKlass15:     622 54736   java.lang.reflect.Method16:     1102    49760   java.lang.Object[]17:     937 37480   java.util.TreeMap$Entry18:     332 27960   java.util.HashMap$Entry[]19:     579 27792   java.nio.HeapByteBuffer20:     578 27744   java.nio.HeapCharBuffer21:     1021    24504   java.lang.StringBuilder22:     1158    24176   java.lang.Class[]23:     721 23072   java.util.HashMap$Entry24:     434 20832   java.util.TreeMap25:     689 18936   java.lang.String[]26:     238 17440   java.lang.reflect.Method[]27:     29  16800   * MethodDataKlass28:     204 14688   java.lang.reflect.Field29:     330 13200   java.util.LinkedHashMap$Entry30:     264 12672   java.util.HashMap...585:        1   16  java.util.LinkedHashSet586:        1   16  sun.rmi.runtime.NewThreadAction$2587:        1   16  java.util.Hashtable$EmptyIterator588:        1   16  java.util.Collections$EmptySetTotal :     79700   8894800Heap traversal took 1.288 seconds.

最佳答案

您始终可以执行 strace -f -p pid 来查看 Java 进程正在做什么。从它的外观来看(如果没有 -F,您将无法获得 jstack,并且线程 5548 没有显示调用堆栈并且是 IN_VM),看起来线程 5548 占用了太多做某事,或者可能处于某种无限循环中。

关于java - 为什么这个 Java 进程无法终止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8046022/

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