更新时间:2022-02-22 GMT+08:00

Storm性能调优

操作场景

通过调整Storm参数设置,可以提升特定业务场景下Storm的性能。

本章节适用于MRS 3.x及后续版本。

修改服务配置参数,请参考修改集群服务配置参数

拓扑调优

当需要提升Storm数据量处理性能时,可以通过拓扑调优的操作提高效率。建议在可靠性要求不高的场景下进行优化。

表1 调优参数

配置参数

默认值

调优场景

topology.acker.executors

null

Acker的执行器数量。当业务应用对可靠性要求较低,允许不处理部分数据,可设置参数值为“null”或“0”,以关闭Acker的执行器,减少流控制,不统计消息时延,提高性能。

topology.max.spout.pending

null

Spout消息缓存数,仅在Acker不为0或者不为null的情况下生效。Spout将发送到下游Bolt的每条消息加入到pending队列,待下游Bolt处理完成并确认后,再从pending队列移除,当pending队列占满时Spout暂停消息发送。增加pending值可提高Spout的每秒消息吞吐量,提高性能,但延时同步增加。

topology.transfer.buffer.size

32

每个worker进程Distuptor消息队列大小,建议在4到32之间,增大消息队列可以提升吞吐量,但延时可能会增加。

RES_CPUSET_PERCENTAGE

80

设置各个节点上的Supervisor角色实例(包含其启动并管理的Worker进程)所使用的物理CPU百分比。根据Supervisor所在节点业务量需求,适当调整参数值,优化CPU使用率。

JVM调优

当应用程序需要处理大量数据从而占用更多的内存时,存在worker内存大于2GB的情况,推荐使用G1垃圾回收算法。

表2 调优参数

配置参数

缺省值

调优场景

WORKER_GC_OPTS

-Xms1G -Xmx1G -XX:+UseG1GC -XX:+PrintGCDetails -Xloggc:artifacts/gc.log -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=1M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=artifacts/heapdump

应用程序内存中需要保存大量数据,worker进程使用的内存大于2G,那么建议使用G1垃圾回收算法,可修改参数值为“-Xms2G -Xmx5G -XX:+UseG1GC”。