了解线程转储

问题描述 投票:0回答:1

我有 Spring Boot 3 应用程序,在几个小时的正常运行时间后最近停止响应,我进行了线程转储,所有 ForkJoinPool.commonPool-worker 堆栈跟踪如下所示

"ForkJoinPool.commonPool-worker-2" #79 daemon prio=5 os_prio=0 cpu=8662597.78ms elapsed=13618.27s tid=0x00007f6fc401e190 nid=0x773 runnable  [0x00007f7130510000]
   java.lang.Thread.State: RUNNABLE
    at javax.net.ssl.SSLEngine.wrap([email protected]/SSLEngine.java:524)
    - parking to wait for  <0x0000000733a31ef8> (a java.util.concurrent.ForkJoinPool)
    at oracle.net.nt.SSLSocketChannel.shutdown(SSLSocketChannel.java:381)
    - locked <0x000000073aed60d0> (a oracle.net.nt.SSLSocketChannel)
    at oracle.net.nt.SSLSocketChannel.write(SSLSocketChannel.java:242)
    at oracle.net.ns.NIOPacket.writeToSocketChannel(NIOPacket.java:211)

这是否意味着我遇到了僵局?

不知道如何理解以下几行

线程是否想要自行停放,因为它想要等待其他线程?

如何找到0x0000000733a31ef8?我在线程转储中没有看到这样的线程

at javax.net.ssl.SSLEngine.wrap([email protected]/SSLEngine.java:524)
- parking to wait for  <0x0000000733a31ef8> (a java.util.concurrent.ForkJoinPool)
java multithreading
1个回答
0
投票

了解线程转储的参考:https://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/geninfo/diagnos/using_threaddumps.html

该线程是Java公共线程池中众多工作线程之一。现在,它已暂停,在尝试建立安全连接时等待池中的某些内容。已经等待了 4 个多小时,这表明可能是由于网络问题或线程池本身的问题而卡住或延迟。

请参考您的实施以了解网络超时等配置更改,并检查远程服务器当前是否正常启动并运行正常。

© www.soinside.com 2019 - 2024. All rights reserved.