apache-storm - 如何监控 Bolt 的待处理队列的大小?

标签 apache-storm

我的拓扑有一个或两个瓶颈。 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}

关于apache-storm - 如何监控 Bolt 的待处理队列的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34162410/

相关文章:

events - 拉米纳 vs Storm

java - Kotlin:向 guice 注入(inject)的依赖项添加一个接口(interface),以便我们可以仅出于单元测试目的而模拟它们?

java - Storm 不尊重最大喷口支出

java - 向 apache Storm 添加一个新的主管节点给我带来麻烦

hadoop - Storm 创造拓扑

java - 找到多个defaults.yaml资源。您可能将 Storm jar 与您的拓扑 jar 捆绑在一起

java - 在 StormCrawler 上获取拓扑以正确写入 warc 文件

apache-zookeeper - Storm nimbus 如何从 worker 那里得到 ACK?它使用动物园管理员吗?

apache-storm - Spark Streaming 和 Storm 的区别

java - Storm 发射执行延迟