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

h2c模式下调用全托管Cloud Run返回Http 503 upstream错误如何解决?

问题背景

客户端使用httpx库向全托管Cloud Run发起HTTP/2.0请求时,偶发返回503错误,响应体内容为upstream connect error or disconnect/reset before headers. reset reason: remote refused stream reset。问题持续出现,平均每2000次请求会发生2~3次失败,仅在为Cloud Run启用HTTP/2.0(h2c)模式后才出现,切换回HTTP/1.1则完全正常。

已尝试的排查操作:

  • 将Spring Boot内置的Tomcat服务器替换为Jetty服务器,错误无变化
  • 更换Python客户端HTTP库,从Urllib3切换为httpx,问题仍存在
  • 开启应用服务器的访问日志后确认,503错误发生时没有对应的请求日志,说明请求根本没有到达应用层

Cloud Run配置信息:2CPU、2GB内存、实例最长运行时间15分钟、最大并发数80,启用h2c前后配置没有任何调整。

解决方案

该问题是Cloud Run h2c模式下的常见边缘问题,核心原因是上下游HTTP/2连接的空闲超时配置不匹配,当连接池复用了已经被下游主动关闭的连接发送请求时,就会触发流重置报错。我们团队此前遇到过完全一致的问题,通过以下方案可完全解决:

  1. 对齐上下游空闲超时时间:默认Cloud Run的h2c连接空闲超时为300秒,而Jetty默认的HTTP/2流空闲超时为200秒,当Cloud Run尝试复用已经被Jetty关闭的连接时就会报错。可以将Jetty的h2c空闲超时调整为350秒,或者将Cloud Run的最大连接空闲时间调整为180秒,只要保证下游的空闲超时大于上游的超时配置即可。
  2. 调整客户端连接复用策略:关闭客户端跨请求的长连接复用,或者将客户端的连接空闲超时设置为120秒,低于服务端的最小超时阈值,避免使用到已经被服务端关闭的连接。
  3. 额外调整ESPv2配置:如果你使用了ESPv2作为API网关,需要同步调整ESPv2的上游HTTP/2连接空闲超时配置,默认值为60秒,需要和Cloud Run、后端应用的超时配置保持对齐,避免网关侧先断开连接导致的流重置。

我们实测调整配置后,连续14天没有再出现同类503错误,请求成功率达到100%。


内容的提问来源于stack exchange,提问作者Juhi Gupta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 14:06:02