【问题标题】:Storm: Why emitting data in loop from a Bolt hits performance?Storm:为什么从 Bolt 循环发出数据会影响性能?
【发布时间】:2014-11-25 15:15:55
【问题描述】:

我创建了一个 Bolt,每次调用时都会发出 100 次(for 循环)10 字节消息。 这导致风暴行动缓慢。

是什么原因造成的?满队?内存问题?

【问题讨论】:

  • 行动缓慢是什么意思?比较什么?是生产环境还是你的本地机器?
  • 在本地机器中,如果我发出 100k 元组直接来自 spout,它需要大约 1 秒,但如果我从 spout 发出 1k 元组,然后每个元组发出 100 次(使用循环)从螺栓(从喷口获取数据)大约需要 7 秒

标签: apache-storm


【解决方案1】:

尝试增加风暴内部队列缓冲区大小并检查性能。

【讨论】:

  • 哪个队列?您如何建议更改缓冲区大小?来自风暴配置文件或(如果可能的话)来自代码中的配置对象?
【解决方案2】:
 conf.put(Config.TOPOLOGY_RECEIVER_BUFFER_SIZE,             8);
 conf.put(Config.TOPOLOGY_TRANSFER_BUFFER_SIZE,            32);
 conf.put(Config.TOPOLOGY_EXECUTOR_RECEIVE_BUFFER_SIZE, 16384);
 conf.put(Config.TOPOLOGY_EXECUTOR_SEND_BUFFER_SIZE,    16384);

【讨论】:

    猜你喜欢
    • 2012-04-13
    • 2012-05-11
    • 1970-01-01
    • 2020-07-23
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多