【发布时间】:2019-02-08 19:22:15
【问题描述】:
我们在其中一个模块中使用了 hystrix - 断路器模式 [库]。 用例是:- 我们从 kafka 轮询 16 条消息并使用并行流处理它们,因此,对于工作流中的每条消息,它需要 3 个受 hystric 命令保护的休息调用。现在,问题是当我尝试运行我的单个实例时,CPU 显示峰值,线程转储显示所有 3 个命令的许多线程处于等待状态。如下:-
省略了线程名称,但假设所有线程池都显示相同的内容:-
线程池 7" #82 线程状态:WAITING(停车) 在 sun.misc.Unsafe.park(本机方法) - 停车等待 (a java.util.concurrent.SynchronousQueue$TransferStack) 在 java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) 在 java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:458) 在 java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362) 在 java.util.concurrent.SynchronousQueue.take(SynchronousQueue.java:924) 在 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 在 java.lang.Thread.run(Thread.java:748)
您能帮我微调应用程序和线程池参数吗? 我在这里缺少什么?
【问题讨论】:
标签: spring-boot spring-cloud-netflix hystrix netflix circuit-breaker