-
细分spout/bolt。使其更贴近分布式,对不同的component灵活分配资源。
-
对于grouping,尽量采用localgrouping,减少网络传输。localgrouping可以实现数据尽量在进程内传输,降低网络带来的开销。
-
spout端优化,假如在topology中,处理瓶颈在spout端,而且你又不能增加spout的数量,可以试试修改spoutWaitStrategy,默认waitstrategy是sleep(1ms),如果嫌这个也慢,不妨试试yield(),当然会带来一定的cpu压力。
-
让spout nextTuple尽量简单,没有阻塞,没有处理逻辑,直接取数据emit。
-
找出各个componet的process cost,例如bolt中业务逻辑处理时间看有无优化空间,减少bolt的execute latency。
-
根据sotrm UI的exucute latency,spout->bolt1->bolt2,各个component的处理延迟时间,来分配各个的task数比例。
-
针对特定的资源,找出瓶颈所在,比如IO,CPU等,考虑增加worker中线程池数,即task/worker。
storm优化topology思路
最新推荐文章于 2024-01-18 02:06:26 发布