我有一个运行在aws上的拓扑。我使用M3 xlarge机器,15GB内存,8个管理器。我的拓扑结构很简单,我从Kafka spout -> [db o/p1] -> [db o/p2] -> [dynamo fetch] -> [dynamo write &
db/ps是有条件的。延迟在100 - 150毫秒之间
但是我从来没有能够达到超过300个消息/秒的吞吐量。
要进行哪些配置更改,以便我可以获得超过3k消息/秒的吞吐量?
dynamo fetch bolt执行延迟约为150 - 220ms发电机读螺栓执行延迟也在这个数字附近。
四个螺栓,每个螺栓并行度为90,一个喷头并行度为30 (30 kafka分区)
总延迟大于4秒。
topology.message.timeout.secs: 600
worker.childopts: "-Xmx5120m
no. of worker ports per machine : 2
no of workers : 6
no of threads : 414
executor send buffer size 16384
executor receive buffer size 16384
transfer buffer size: 34
no of ackers: 24
查看控制台快照,我看到…
1) Spout的总延迟远远大于螺栓执行延迟的总和,这意味着其中一个流上有积压,并且
2) SEBolt的容量比其他螺栓高得多,这意味着Storm觉得这个螺栓比其他螺栓更有必要使用
所以我认为你的瓶颈是SEBolt。考虑一下增加并行度的提示。如果任务总数变得过高,则减少其他螺栓的并行提示以抵消SEBolt的增加。