我正在使用storm-core-0.9.0.1
单个本地群集。启动风暴后,即使CPU处于空闲状态,CPU使用率仍为maintaining around 100%
。经过长时间的研究,我发现本地群集storm uses LMAX Disruptor
(reference)在内部使用BlockingWaitStrategy。在那个班级有行
final long availableSequence = _barrier.waitFor(nextSequence, 10, TimeUnit.MILLISECONDS);
这使风暴使用100%的CPU。此link中有关于此问题的公开错误。 是否有任何解决方案或任何修复方法?
我尝试为Storm升级disruptor-2.10.1 jar to disruptor-3.2.1
,但在启动时会导致其他一些问题。
我还尝试将default-core-0.9.0.1.jar中提供的default.yaml中的等待策略(topology.disruptor.wait.strategy)更改为SleepingWaitStrategy
,但CPU使用率仍为大约100%。在生产中,很难将CPU使用率保持在100%。任何解决方案?