为什么我的Storm拓扑不能跟上?

时间:2017-07-26 15:55:59

标签: performance apache-storm

我的硬件配置:

  • 2 x Nimbus:2 x 1 CPU @ 10 Core / 20 Thread(CentOS报告40核)
  • 19 x主管:2 x 1 CPU @ 12 Core / 24线程(CentOS报告48核)
  • 所有磁盘均为10K主轴或更快
  • 所有机箱均为128GB RAM
  • 10gbit互连
  • Kafka有40个分区

我的拓扑结构是简单的低CPU工作。它需要一个大约25千字节的JSON对象,解压缩它,查询一些web服务(每个都在不同的螺栓中),将它转换为一个新对象,并将这个新对象发送到最终的Web服务。

我没有计时任何元组,我的机器上的CPU使用率都非常低。

Storm topology after some time

我写了一个小应用程序来ping ZooKeeper并获得偏移,并将它们与Kafka队列深度进行比较。时间戳是从今天早上开始的。偏移量在Kafka的所有40个分区中求和,ZooKeeper偏移量在所有20个消费者中求和。 “滞后”列是差异,括号中的值是每个心跳之间的差异(每15秒)。第一行显示偏移量增加了7条消息,但延迟增加了13条。这意味着有20条消息进入,但只处理了7条消息。当拓扑最初开始时,它会跟上,然后慢慢落后。

[7/26/2017 10:34:50 AM] Offset 35535228, lag 53983 (7, 13)
[7/26/2017 10:35:05 AM] Offset 35535234, lag 53990 (6, 7)
[7/26/2017 10:35:21 AM] Offset 35535237, lag 53992 (3, 2)
[7/26/2017 10:35:36 AM] Offset 35535243, lag 53998 (6, 6)
[7/26/2017 10:35:54 AM] Offset 35535247, lag 54004 (4, 6)
[7/26/2017 10:36:10 AM] Offset 35535251, lag 54013 (4, 9)
[7/26/2017 10:36:27 AM] Offset 35535258, lag 54018 (7, 5)
[7/26/2017 10:36:43 AM] Offset 35535267, lag 54024 (9, 6)
[7/26/2017 10:36:59 AM] Offset 35535276, lag 54028 (9, 4)
[7/26/2017 10:37:15 AM] Offset 35535283, lag 54041 (7, 13)
[7/26/2017 10:37:31 AM] Offset 35535293, lag 54063 (10, 22)
[7/26/2017 10:37:46 AM] Offset 35535310, lag 54078 (17, 15)
[7/26/2017 10:38:02 AM] Offset 35535320, lag 54084 (10, 6)
[7/26/2017 10:38:17 AM] Offset 35535326, lag 54091 (6, 7)
[7/26/2017 10:38:33 AM] Offset 35535330, lag 54100 (4, 9)
[7/26/2017 10:38:48 AM] Offset 35535334, lag 54103 (4, 3)
[7/26/2017 10:39:04 AM] Offset 35535339, lag 54116 (5, 13)
[7/26/2017 10:39:21 AM] Offset 35535342, lag 54120 (3, 4)
[7/26/2017 10:39:36 AM] Offset 35535349, lag 54124 (7, 4)
[7/26/2017 10:39:52 AM] Offset 35535351, lag 54134 (2, 10)
[7/26/2017 10:40:08 AM] Offset 35535355, lag 54142 (4, 8)
[7/26/2017 10:40:23 AM] Offset 35535357, lag 54146 (2, 4)
[7/26/2017 10:40:39 AM] Offset 35535359, lag 54149 (2, 3)
[7/26/2017 10:40:54 AM] Offset 35535365, lag 54160 (6, 11)

接下来我在哪里看?

1 个答案:

答案 0 :(得分:0)

Bryan,尝试为您的拓扑设置数字ackers,我只能看到2个ackers执行器正在为您的拓扑运行,您可以使用此conf.setNumAckers设置数量的ackers(10)。

这可以解决您的问题。

如果我没错,拓扑会在一段时间后开始使元组失败吗?