apachestorm:kafkaspout由于超时而有很多失败的元组

4sup72z8  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(287)

在我的processtime窗口wordcount拓扑中,输入速率是2000 tuple/s。我的计数螺栓的窗口大小是3s和1s。从ui可以看出,有大量失败的元组。通过查看日志,元组失败的原因是超时。我还设置了 TOPOLOGY_MAX_SPOUT_PENDING 到10000 topology.message.timeout.secs 到60岁。根据这两个参数 Capacity 以及 Execute latency 图中螺栓的平行度应足够。
问:我应该如何调整参数?例如, TOPOLOGY_MAX_SPOUT_PENDINGtopology.message.timeout.secs 或者别的什么。
这是我的storm ui的图片:storm ui

yhqotfr8

yhqotfr81#

我会先降低 topology.max.spout.pending . 一旦你有了一个拓扑,它不是无用的处理已经超时的元组,它应该更容易告诉你的瓶颈在哪里。
请记住,容量/执行延迟只考虑在 execute 对于每个元组。
我记得Kafka的插销在离开前并没有确认元组 execute ,而是将元组传递给生产者,并通过生产者的回调来确认元组,这可能发生在 execute 返回。因此,在capacity/execute延迟中看不到处理kafka bolt中元组所花费的实际时间。您可以看到元组到达 execute 而元组在进程延迟中被确认,这是相当高的。
您的count\u bolt进程延迟也很高,因此请查看该进程是否也在对元组进行缓冲之前对它们进行确认。

相关问题