【问题标题】:Storm topology processing slowing down gradually风暴拓扑处理逐渐变慢
【发布时间】:2015-11-27 01:59:07
【问题描述】:

我一直在阅读有关 apache Storm 尝试了一些来自storm-starter 的示例。还了解了如何调整拓扑以及如何扩展它以足够快地执行以满足所需的吞吐量。

我创建了启用 acking 的示例拓扑,我能够实现每秒 3K-5K 消息处理。它在最初的 10 到 15 分钟或大约 100 万到 200 万条消息中执行得非常快,然后开始减速。在storm UI上,我可以看到整体延迟开始逐渐上升并且没有回来,一段时间后处理下降到每秒只有几百个。对于我尝试过的所有类型,我都得到了完全相同的行为,最简单的一种是使用 KafkaSpout 从 kafka 读取并将其发送到转换 Bolt 解析 msg 并使用 KafkaBolt 再次将其发送到 kafka。解析器非常快,因为解析消息所需的时间不到一毫秒。我尝试了几个增加/描述并行度、更改缓冲区大小等的选项,但行为相同。请帮助我找出拓扑逐渐变慢的原因。这是我正在使用的配置

1 Nimbus machine (4 CPU) 24GB RAM
2 Supervisor machines (8CPU) and using 1 thread per core with 24GB RAM
4 Node kafka cluster running on above 2 supervisor machines (each topic has 4 partitions)

KafkaSpout(2 parallelism)-->TransformerBolt(8)-->KafkaBolt(2)

topology.executor.receive.buffer.size: 65536
topology.executor.send.buffer.size: 65536
topology.spout.max.batch.size: 65536
topology.transfer.buffer.size: 32
topology.receiver.buffer.size: 8
topology.max.spout.pending: 250

一开始

几分钟后

45 分钟后 - 延迟开始上升

80 分钟后 - 延迟将继续上升,并在达到 8 到 1000 万条消息时持续到 100 秒

可视化虚拟机截图

线程

【问题讨论】:

  • 解释为什么它被否决,以便我可以改进..
  • 可以发一些storm UI截图吗?
  • 在帖子中添加了屏幕截图,在可视化 vm 线程监视器中观察到大部分 Transformer 螺栓线程处于停放、等待或监视状态,很少有人在运行。此外,大多数线程正在运行,但在一段时间内进入等待或停放状态。无法找出原因?
  • Transformation bolt 会根据条件过滤消息​​,因此不要因为看到 RT_LEFT_BOLT 的发射次数减少而感到困惑。只有 2% 的消息会通过此用例的过滤条件。

标签: apache-storm


【解决方案1】:

注意RT_LEFT_BOLT上的capacity度量,它非常接近1;这就解释了为什么你的拓扑变慢了。

来自Storm documentation:

Storm UI 也变得更加有用。跟踪所有螺栓的新统计信息“#executed”、“执行延迟”和“容量”。 “容量”指标非常有用,它可以告诉您在过去 10 分钟内螺栓执行元组所花费的时间百分比。如果此值接近 1,则 Bolt 处于“满负荷”状态并且是拓扑中的瓶颈。满载螺栓的解决方案是增加该螺栓的平行度。

因此,您的解决方案是向该给定螺栓 (RT_LEFT_BOLT) 添加更多执行程序(和任务)。您可以做的另一件事是减少 RT_RIGHT_BOLT 上的执行器数量,容量表明您不需要那么多执行器,可能只有 1 或 2 个可以完成这项工作。

【讨论】:

  • 我尝试将并行度增加到 60,但我仍然看到相同的行为,即使我使用 60,我也看到相同的容量数,这是否意味着它有太多数据..?,另一个疑问,为什么 Transformer bolt 上的执行延迟会上升……如果它以容量 1 运行,它应该几乎相同?
【解决方案2】:

问题是由于使用 newgen 参数的 GC 设置,它没有完全使用分配的堆,因此内部风暴队列已满并且内存不足。奇怪的是,storm并没有抛出内存错误,它只是停止了,在visual vm的帮助下我能够追踪到它。

【讨论】:

  • Pramod 你介意提供导致问题之前的 GC 设置是什么,以及究竟是什么值解决了问题。谢谢
猜你喜欢
  • 2018-08-08
  • 1970-01-01
  • 2013-08-06
  • 1970-01-01
  • 2016-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多