我有 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)
了解线程转储的参考:https://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/geninfo/diagnos/using_threaddumps.html
该线程是Java公共线程池中众多工作线程之一。现在,它已暂停,在尝试建立安全连接时等待池中的某些内容。已经等待了 4 个多小时,这表明可能是由于网络问题或线程池本身的问题而卡住或延迟。
请参考您的实施以了解网络超时等配置更改,并检查远程服务器当前是否正常启动并运行正常。