Storm netty client溢出的bug分析

在Storm 0.9.1及以上版本中,由于指数退避算法的实现,当网络延迟导致重连时,可能出现int溢出,使线程睡眠值为负数。分析源码发现,backoff的最大值乘以4可能超出int范围,引发异常。尽管不影响数据处理,但会导致任务重新分配。解决方案是调整配置项`base_sleep_ms`,确保不超过2的1次方,以避免溢出。可以通过修改storm.yaml或任务配置来实现。
摘要由CSDN通过智能技术生成
Storm0.9.1以上版本开始默认使用netty作为消息传输,之前版本是用zmq。 
我们线上的基于storm 的日志ETL 任务运行一段时间偶尔会出现netty 传输超时达到最大次数31次,导致Thread.sleep( sleepMs) 里面sleep值为负数的exception (timeout value is negative) ,经过对storm netty Client的源码阅读,发现是由于int数溢出导致的。

相关源码文件:  backtype.storm.messaging.netty.Client


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值