You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用GCP PubSub作为源的Flink作业HTTP2异常及消息重复问题排查

问题原因解析

1. 已处理消息重复(未完成确认)

  • 核心原因是检查点后的PubSub消息确认请求失败:Flink与PubSub集成时,会在检查点成功完成后,批量向PubSub发送已处理消息的确认请求。但由于grpc header超限异常,这个确认请求被PubSub服务端拒绝,导致这些消息从未被标记为已确认。当你设置的90秒确认超时到期后,PubSub会将这些未确认的消息重新推送给Flink作业,最终造成重复处理。
  • 注:即便你的检查点间隔(60秒)小于确认超时(90秒),只要确认请求失败,PubSub就无法感知消息已被处理,仍会触发重发。

2. grpc HTTP2 头大小超限异常

  • 直接原因是批量确认的消息ID总长度超过了grpc默认的header大小限制:你配置的拉取批量是100条,但Flink在检查点时会把整个检查点周期内处理的所有未确认消息打包成一个确认请求。如果这些消息ID的总字符串长度加上grpc请求头的其他内容,超过了默认的10240字节(10KB)限制,就会触发Header size exceeded max allowed size (10240)异常。
  • 补充:PubSub的grpc客户端默认将批量确认的消息ID放在请求头相关的元数据中,当消息ID数量多、字符串长时,很容易触碰到这个限制。

内容的提问来源于stack exchange,提问作者Amrith M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 00:20:18