В последнее время хост linux не работает из-за нехватки ресурсов. И в ходе дальнейшего исследования я обнаружил, что для экземпляра JVM запущено слишком много потоков, более 3000 потоков ... После некоторого тестирования я обнаружил множество потоков демонов с именем «hystrix-», созданных для каждого доступа, и даже поток пользователя был закрыто, эти запущенные потоки демона не закрываются. Результат PID jstack показан ниже:
2020-04-09 14:42:14
Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.171-b11 mixed mode):
"hystrix-dcpms-service-biz-flow-20" #124 daemon prio=5 os_prio=0 tid=0x00007fc44c083800 nid=0x70a9 waiting on condition [0x00007fc43f6eb000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000e59870c8> (a java.util.concurrent.SynchronousQueue$TransferStack)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:458)
at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362)
at java.util.concurrent.SynchronousQueue.take(SynchronousQueue.java:924)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
"hystrix-dcpms-service-incidence-relation-6" #123 daemon prio=5 os_prio=0 tid=0x00007fc44819c800 nid=0x70a3 waiting on condition [0x00007fc43f7ec000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000ff9c20d8> (a java.util.concurrent.SynchronousQueue$TransferStack)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:458)
at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362)
at java.util.concurrent.SynchronousQueue.take(SynchronousQueue.java:924)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Может кто-нибудь, пожалуйста, помогите решить эту проблему? очень ценю.