apache storm 2.1.0内存相关配置

lymgl2op  于 2021-06-24  发布在  Storm
关注(0)|答案(1)|浏览(387)

我们正在从1.1.x迁移到2.1.0。
在我们当前的设置中,storm.yaml中有以下内存配置

nimbus.childopts: -Xmx2048m
supervisor.childopts: -Xmx2048m
worker.childopts: -Xmx16384m

我在中看到许多其他与内存相关的配置https://github.com/apache/storm/blob/master/conf/defaults.yaml,并有以下问题。
worker.childopts和topology.worker.childopts之间有什么区别?如果我们在storm.yaml中设置worker.childopts,我们还需要覆盖topology.worker.childopts吗?
如果我们在storm.yaml中设置worker.childopts,我们还需要重写worker.heap.memory.mb吗?这两个配置之间有关系吗?
topology.component.resources.onheap.memory.mb是否应<worker.childopts?我们应该如何确定topology.component.resources.onheap.memory.mb的值?
如果有人能解释这些观点,我将不胜感激。

cvxl0en2

cvxl0en21#

我最近自己也处理了一些配置,所以我在这里分享我的见解: worker.childoptstopology.worker.childopts -第一个参数为所有worker设置childopts。第二个参数可用于覆盖各个拓扑的参数,例如使用 conf.put(Config.TOPOLOGY_WORKER_CHILDOPTS, "someJvmArgsHere"); 的默认值 worker.childopts"-Xmx%HEAP-MEM%m -XX:+PrintGCDetails -Xloggc:artifacts/gc.log -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=1M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=artifacts/heapdump" 根据风暴Git的说法。注意第一个论点,它包括一个替换模式 %HEAP-MEM% . 此模式将替换为任何配置 worker.heap.memory.mb . 您可以从java中的拓扑配置内部重写后一个参数,因此我猜他们这样构建它是为了能够快速修改各个拓扑的java堆。我注意到的一点是,重写时,只有在至少一个喷口或螺栓配置了 .setMemoryLoad(int heapSize) .
这在很大程度上取决于单个拓扑的需要,但一般来说,这是一个非常好的主意 topology.component.resources.onheap.memory.mb 比您在中为-xmx配置的文件要小 worker.childopts . 如何找到一个好的价值 topology.component.resources.onheap.memory.mb 取决于对拓扑组件的内存消耗的测试和了解。例如,我有一个从redis接收元组并发出元组的拓扑。如果螺栓很忙,元组可能会堆积在喷口中,因此我为它配置了一些内存空间。不过,我通常不会修改 topology.component.resources.onheap.memory.mb 而是使用 setMemoryLoad(int heapSize) 方法,因为这样可以为拓扑的各个组件设置不同的值。storm文档和相关主题在这里。

相关问题