Strom优化

来源:互联网 发布:超级特工软件 编辑:程序博客网 时间:2024/04/28 12:24

并行度

worker为storm提供工作进程,程序的并行度可以设置(包括spout和bolt的并行度,如果有acker的话还包括acker的并行度),并行度即为task 数目。
一般而言 worker和task之间的比例,即1个worker包含10~15个左右,当然根据配置和应用需要测试优化。

worker(slots)

CPU 16核,建议配置20个worker。CPU 24或32核,30个worker
默认情况下,Storm启动worker进程时,JVM的最大内存是768,可以通过在Strom的配置文件storm.yaml中设置worker的启动参数 worker.childopts: “-Xmx2048m”
一个topology使用的worker数量,12个是比较合理的,这个时候吞吐量和整体性能最优。如果多增加worker进程的话,会讲一些原本线程间的内存通信变为进程间的网络通信。

acker优化

如果可靠性对你来说不是那么重要,那么你可以通过不跟踪这些tuple树来获取更好的性能。不去跟踪消息的话会使得系统里面的消息数量减少一半, 因为对于每一个tuple都要发送一个ack消息。
有三种方法可以去掉可靠性。
第一是把config.setNumAckers(0)设置为0,在这种情况下, storm会在spout发射一个tuple之后马上调用spout的ack方法。也就是说这个tuple树不会被跟踪。
第二个方法是在tuple层面去掉可靠性。 你可以在发射tuple的时候不指定messageid来达到不跟踪spout中tuple的目的。
最后一个方法是如果你对于一个tuple树里面的某一部分到底成不成功不是很关心,那么可以在发射这些tuple的时候unanchor它们(anchor是锚定的意思,unanchor表示不把当前这个tuple包含到tuple树中,也就是说不跟踪这个消息了)。 这样这些tuple就不在tuple树里面, 也就不会被跟踪了。

1 0
原创粉丝点击