read tcp :49560->:9092: i/o timeout under sarama kafka golang panic

我们经常出现这个问题,除了上次修复完后,正常跑也总有这种问题。因为我们的场景是文件扫描,文件扫描的处理方式是很重的,消费时间长。所以经常触发重平衡。

那么又回到了原始问题。第一性原理,运维和架构,就是要做工程上的最佳实践,而不是什么技术新旧。最佳实践就是最佳适配。

kafka的consumer重平衡机制,注定了它不适合做长逻辑耗时业务的处理。(它的背景本身是无逻辑处理,只是传输日志)

 -----------------------------------------------------------------

20220419复现:

参数

config.Consumer.Group.Session.Timeout = time.Second * 120

config.Consumer.Group.Heartbeat.Interval = time.Second * 20

调整成
config.Consumer.Group.Session.Timeout = time.Second * 30  config.Consumer.Group.Heartbeat.Interval = time.Second * 5
就复现:
{"Level":"panic","Time":"2022-04-19T20:01:14.874530508+08:00","LoggerName":"","Message":
"Error from consumer: read tcp :33178-\u003e:9093: i/o timeout",
"Caller":{"Defined":true,"PC":8910019,"File":"/data/share//golang/cloudscan/pubsub/groupconsumer.go","Line":147,
"Function":"cloudscan/pubsub.(*GroupConsumer).StartConsume.func1"},"Stack":"cloudscan/pubsub.(*GroupConsumer).StartConsume.func1\n\t
/data/share//golang/cloudscan/pubsub/groupconsumer.go:147"


----------------------------------------------------------------

为了应对这种情况,我们调大了Sarama 的参数config.Consumer.Group.Session.Timeout = time.Second * 120,也就是心跳超时时间,但我们的网络超时时间很小,默认30秒,30秒我们的场景,文件扫描消费时间长,30秒是可能处理不完数据的。最终配置:

config
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值