在我的processtime窗口wordcount拓扑中,输入速率是2000 tuple/s。我的计数螺栓的窗口大小是3s和1s。从ui可以看出,有大量失败的元组。通过查看日志,元组失败的原因是超时。我还设置了 TOPOLOGY_MAX_SPOUT_PENDING
到10000 topology.message.timeout.secs
到60岁。根据这两个参数 Capacity
以及 Execute latency
图中螺栓的平行度应足够。
问:我应该如何调整参数?例如, TOPOLOGY_MAX_SPOUT_PENDING
, topology.message.timeout.secs
或者别的什么。
这是我的storm ui的图片:storm ui
1条答案
按热度按时间yhqotfr81#
我会先降低
topology.max.spout.pending
. 一旦你有了一个拓扑,它不是无用的处理已经超时的元组,它应该更容易告诉你的瓶颈在哪里。请记住,容量/执行延迟只考虑在
execute
对于每个元组。我记得Kafka的插销在离开前并没有确认元组
execute
,而是将元组传递给生产者,并通过生产者的回调来确认元组,这可能发生在execute
返回。因此,在capacity/execute延迟中看不到处理kafka bolt中元组所花费的实际时间。您可以看到元组到达execute
而元组在进程延迟中被确认,这是相当高的。您的count\u bolt进程延迟也很高,因此请查看该进程是否也在对元组进行缓冲之前对它们进行确认。