使用LMAX Disruptor,我们观察到如果我们在一个应用程序中使用类似5-10个干扰器(有点像一个破坏者链,每个破坏者都有一个消费者在其上执行指定的任务,然后将消息移交给下一个disruptor / ringbuffer),会发生什么是CPU利用率达到90%以上,系统变得无响应,直到我们关闭应用程序,我们觉得这是因为有这么多活动的破坏者线程。即使破坏者没有真正处理任何事情,也会发生这种情况。任何人都可以评论应用程序中使用的最佳干扰器数量是什么?
答案 0 :(得分:1)
可能需要更改您在消费者上使用的等待策略。如果您对所有这些策略使用忙等待策略,即使没有为环形缓冲区提供任何输入,轮询线程仍然会占用CPU资源,因为它们会处于紧密的循环中,因为它们会在不断检查缓冲区是否有新值要读取。