我的拓扑结构存在瓶颈或瓶颈。 Storm UI中的容量指标对于识别这些内容很有用,但我对Bolt的队列大小更感兴趣。
我的理解是每个螺栓有两个队列,一个用于待执行的元组,另一个用于待发出的元组。是否可以监控这些队列的大小?
我在网上发现了一些关于向Bolts添加ITaskHook实现的内容,但我不清楚如何使用它来监视队列大小。可以使用ITaskHook中的方法来监控它吗?
答案 0 :(得分:4)
您应该能够使用metrics机制查看拓扑组件的队列长度。一种简单的方法是将conf.registerMetricsConsumer(LoggingMetricsConsumer.class)
添加到拓扑的配置中。
以下是我为其中一个组件获取的示例
4:fetch __sendqueue {write_pos=12122, read_pos=12122, capacity=1024, population=0}
4:fetch __receive {write_pos=8588, read_pos=8587, capacity=1024, population=1}