我在aws上运行了拓扑。我使用的是带有15GB内存的M3 xlarge机器,8个主管。我的拓扑很简单,我从中读到 kafka spout - > [db o / p1] - > [db o / p2] - > [dynamo fetch] - > [dynamo write& kafka写道] kafka
db o / ps是有条件的。延迟大约100 - 150毫秒。
但我从未能达到超过300 msgs / sec的吞吐量。
要进行哪些配置更改,以便我可以获得超过3k msgs / sec的吞吐量?
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
答案 0 :(得分:2)
查看控制台快照,我看到......
1)Spout的整体延迟远远大于螺栓执行延迟的总和,这意味着其中一个流上有积压,
2)SEBolt的容量远高于其他螺栓的容量,这意味着Storm认为需要比其他螺栓更多地运行螺栓
所以我认为你的瓶颈是SEBolt。考虑增加对那个的并行性提示。如果任务总数过高,请减少其他螺栓的平行度提示,以抵消SEBolt的增加。