【问题标题】:Apache Storm assign tasks to the same executor threadApache Storm 将任务分配给同一个执行线程
【发布时间】:2021-02-19 14:48:19
【问题描述】:

我一直在为我的一个用例探索 Apache Storm。 Spout 将从我自己的 kafka 实现中读取数据,并将其传递给 bolts。

我的拓扑对单个消费者组的工作速度更快。如果我增加拓扑内的消费者组的数量,我会看到处理速度很慢,尽管我有专用于所有消费者组的每个分区的 spout 和 bolt。

当我调试时,我发现在我的处理过程中发生了更多的上下文切换,因此记录了处理螺栓的线程名称。我可以看到,有时不同的执行线程传递相同的螺栓 ID。

我怀疑因此可能会发生上下文切换,并且由于 cpu 线程缓存未命中,延迟可能会增加。

我的假设是否正确。如果这是这种行为,是否有任何选项可以通过相同的执行线程设置任务,而不是将其传递给另一个执行线程。

【问题讨论】:

    标签: apache-storm apache-storm-topology


    【解决方案1】:

    经过进一步分析和调试,发现storm进程所在的vm中存在CPU窃取。因此我考虑了核心数量是否会成为问题。

    因此,我在具有大量内核的机器上运行了相同的进程,并且 CPU 窃取率降低了,而且我没有看到我的处理速度很慢。所以所有这些问题似乎都与机器配置有关。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      相关资源
      最近更新 更多