高负载下Golang Pub/Sub调用ModifyAckDeadline报InvalidArgument错误
Google Pub/Sub 高负载下ModifyAckDeadline调用异常问题
在10分钟产生约9000条消息的高负载场景中,我们观察到消息处理异常:5个Pod里总有1-2个会持续数分钟返回如下错误:
rpc error: code = InvalidArgument desc = Some acknowledgement ids in the request were invalid. This could be because the acknowledgement ids have expired or the acknowledgement ids were malformed.
该错误对应请求类型:method=/google.pubsub.v1.Subscriber/ModifyAckDeadline
相关事实
- 仅5个Pod中的1-2个出现此问题,这些Pod完全无法处理消息,所有ModifyAckDeadline调用均返回上述错误;
- 消息未过期,即使是1秒前生成的消息,调用ModifyAckDeadline仍会报错;
- 当前配置:
- 5个Pod
- 启用Exactly-once-delivery
- MaxExtensionPeriod = 60s
- MinExtensionPeriod = 10s
- MaxOutstandingMessages = 300
- NumGoroutines = 1
已尝试的操作及结果
- 增加Pod数量:问题依旧,总有1-2个Pod前2分钟正常处理消息,随后5分钟内所有ModifyAckDeadline调用失败,之后恢复正常;
- 降低MaxOutstandingMessages数值:问题持续时间缩短(从5分钟变为1分钟左右)。
内容的提问来源于stack exchange,提问作者KeyB0rys
相关产品推荐
相关产品推荐

