Storm 我的拓扑的处理速率大约是每秒2500条消息,但是完成延迟大约是7毫秒,它不应该等于1000 / 2500 = 0.4毫秒吗?

ljo96ir5  于 2023-01-15  发布在  Apache
关注(0)|答案(1)|浏览(102)

我的拓扑从RabbitMQ读取数据,它的处理速率大约是每秒2500条消息,但是完全延迟大约是7 ms,它不应该等于1000 / 2500 = 0.4ms吗?
拓扑摘要:

请帮助我理解,在我的情况下,参数完全延迟意味着什么。拓扑以大约2500/秒的速率处理来自RabbitMQ队列的消息
RabbitMQ截图:

bvk5enib

bvk5enib1#

根据Storm docs * 完整的延迟仅针对spouts。它是元组发出后调用ack或failure的平均时间。* 因此,它是rabbitmq-spouts发出元组和最后一个bolt对其进行ack之间的时间。
Storm有一个内部队列来产生压力,该队列的最大大小在configs中的topology.max.spout.pending变量中定义。如果您将其设置为一个较高的值,您的rabbit消费者将从rabbit读取消息以在拓扑中的螺栓进行真实的处理之前完成该队列,从而导致对拓扑的实际延迟的错误测量。
在RabbitMQ面板中,您看到的是从它那里消耗消息的速度,而不是处理它们的方式,您比较的是hot和round。
为了测量延迟,我建议运行您的拓扑几天,根据您的屏幕截图,202秒太紧了。

相关问题