gpt4 book ai didi

java - Storm Spout/拓扑性能

转载 作者:行者123 更新时间:2023-11-30 03:01:13 25 4
gpt4 key购买 nike

我遇到 Apache Storm 性能问题,主要来自 spout。

我有一个从 kestrel 队列中发出项目的拓扑。我获取大约 2000 个项目,每次在 spout 中调用 nextTuple 时,我都会发出一个项目。

当在我的 i7 Macbook Pro 上的本地集群中运行时,我发现每秒发出大约 20 个元组,并且该 Storm 将每 50 毫秒调用一次 nextTuple

我正在使用 1 个 spout 任务和 1 个 spout 执行器运行。我已将 setMaxSpoutPending 设置为 10。

为什么每次调用 nextTuple 之间有这么大的时间间隔?在发出新元组之前,outputCollector 是否正在等待每个元组的回复?

我正在运行 java 8 和 Storm 版本 0.9.4

最佳答案

来自文档:https://storm.apache.org/apidocs/backtype/storm/spout/ISpout.html

Storm 在同一个线程上执行 ack、fail 和 nextTuple。这意味着 Ispout 的实现者不需要担心这些方法之间的并发问题。但是,这也意味着实现者必须确保 nextTuple 是非阻塞的:否则该方法可能会阻塞等待处理的 ack 和失败。

提示 1:调用 nextTuple 时发出 1 个元组。提示 2:不要在 nextTuple 中获取数据,而是在单独的线程中获取数据,并使用任何并发队列来推送和轮询数据,因此 nextTuple 只会轮询。提示 3:尝试将 setMaxSpoutPending 设置为 1。提示4:确保每个bolt的execute(tuple)方法都经过优化。

关于java - Storm Spout/拓扑性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35895715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com