apache-storm - Apache Storm 2.1.0 内存相关配置
问题描述
我们正在从 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的值?
感谢有人能解释这些观点。
解决方案
我最近自己摆弄了其中一些配置,所以我在这里分享我的见解:
worker.childopts
vstopology.worker.childopts
- 第一个参数为所有工作人员设置 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 堆。我注意到的一件事是,在覆盖时,如果至少一个 spout 或 bolt 配置了.setMemoryLoad(int heapSize)
.这在很大程度上取决于各个拓扑的需求,但总的来说,
topology.component.resources.onheap.memory.mb
比您为 -Xmx in 配置的任何内容都小很可能是一个非常好的主意worker.childopts
。如何找到合适的值topology.component.resources.onheap.memory.mb
取决于对拓扑组件的内存消耗进行测试和了解。例如,我有一个从 redis 接收元组并发出它们的拓扑。如果 bolts 很忙,元组可能会堆积在 spout 中,因此我在内存方面配置了一些空间。但是,我通常不修改topology.component.resources.onheap.memory.mb
而是使用setMemoryLoad(int heapSize)
拓扑组件的方法,因为这允许为拓扑的各个组件设置不同的值。此主题和相关主题的 Storm 文档在此处。
推荐阅读
- java - 如何在Excel中下推现有数据并使用java插入新数据POI
- javascript - 使用嵌入标签和javascript的多个音频html:当前播放时自动停止其他人
- excel - “刷新全部”的excel遵循什么顺序
- angular - Angular 5将数据从一个组件中的表传递到另一个组件
- sitecore - Sitecore 与 iis 表单身份验证和编码基本身份验证
- c# - ASP.NET Core 2.1 错误?两因素身份验证 (2FA)
- bash - 过滤 2 个时间戳之间的日志文件条目,特别是 [31/Jul/2018:21:36:18 -0700] 格式
- android - 不同设备上的时间选择器对话框主题
- sql-server - Exchange 事务架构 - 数据库设计
- c# - Hangfire Cron 作业未在实际 Cron 时间执行