如何监控 Bolt 的待处理队列的大小?
How to monitor the size of Bolt's pending queues?
我的拓扑有一两个瓶颈。 Storm 中的容量指标 UI 可用于识别这些,但我对 Bolt 队列的大小更感兴趣。
我的理解是每个bolt都有两个队列,一个用于等待执行的元组,另一个用于等待发射的元组。是否可以监控这些队列的大小?
我在网上找到了一些关于向 Bolts 添加 ITaskHook 实现的资料,但我并不清楚如何使用它来监控队列大小。 ITaskHook中的方法可以用来监控吗?
您应该能够使用 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}
我的拓扑有一两个瓶颈。 Storm 中的容量指标 UI 可用于识别这些,但我对 Bolt 队列的大小更感兴趣。
我的理解是每个bolt都有两个队列,一个用于等待执行的元组,另一个用于等待发射的元组。是否可以监控这些队列的大小?
我在网上找到了一些关于向 Bolts 添加 ITaskHook 实现的资料,但我并不清楚如何使用它来监控队列大小。 ITaskHook中的方法可以用来监控吗?
您应该能够使用 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}