storm问题总结

2017-02-14  本文已影响443人  wangliang938
  1. 在Storm UI上,有大量Failed数据,且往往是一旦开始有Fail数据,则Fail数据越积越多
  2. 整体事件端到端延迟很大

分析:
当spout接收到大量数据,而后端bolt处理较慢,如果spout发送的事件在超时时间(topology.message.timeout.secs 默认为30s)内没有最终ACK闭环,即在超时时间内最初的原始消息没有最终获得处理完成的ACK响应时,该事件成为Fail事件。当输入数据量大,且后端处理较为耗时,而无法在设定时间内处理完且ACK时,则会造成超时FAIL。
解决方案:
加大topology.message.timeout.secs默认超时时间,如60s2、 观察系统ACK线程处理性能,如UI界面中的:如果该处理性能较低可考虑增加ACK线程数:topology.acker.executors(默认为null,即与该任务的work数一致),可设置为worker的倍数3、 减少topology.max.spout.pending(默认为null,即不做限制),该配置项可以对spout task接收速度进行流控,例如可以从设置topology.max.spout.pending = 1024开始,即表示当spout发送的数据已经将该pending队列占满,则在该队列满未有空间时,spout的nextTuple方法不被调用,即进行了流控
可能的影响:
topology.max.spout.pending设置后,会降低整个系统的吞吐量,可以先从1024开始,不断增加,最终达到系统稳定且吞吐量合适。

上一篇下一篇

猜你喜欢

热点阅读