作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我们的 Storm 1.0.2 应用程序中,我们面临内存不足的异常。在调试时,我们发现 Kafka spout 向 Bolt 发出了太多消息。 bolt 的运行能力几乎为 4.0。那么有没有一种方法可以在 Storm 中启用背压,以便喷口根据 bolt 的容量进行排放。尝试将topology.backPressure.enable启用为true,但遇到此问题https://issues.apache.org/jira/browse/STORM-1949 。我们正在使用 KafkaSpout 的开箱即用实现,并为我们的 Bolt 扩展 BaseRichBolt。我们的 DAG 是线性的。
最佳答案
您可以通过在拓扑配置中设置maxSpoutPending值来处理KafkaSpout的背压,
Config config = new Config();
config.setMaxSpoutPending(200);
config.setMessageTimeoutSecs(100);
StormSubmitter.submitTopology("testtopology", config, builder.createTopology());
maxSpoutPending 是给定时间拓扑中可以等待确认的元组数量。设置此属性将告知 KafkaSpout 不再使用 Kafka 中的任何数据,除非未确认的元组计数小于 maxSpoutPending 值。
关于apache-storm - Storm 中的背压,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44557915/
我是一名优秀的程序员,十分优秀!