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

Node.js环境Cloud Run服务互调出现ECONNREFUSED报错如何排查解决?

问题根因可能性判定

该问题由Google基础设施原生故障导致的概率极低,99%以上的同类报错来源于服务配置不匹配、应用层连接管理不当,或是Cloud Run自动扩缩容逻辑无法匹配流量涨幅的问题。

排查步骤

  • 检查被调用方Cloud Run运行指标:查看报错时间段内的服务实例数、并发使用率、请求排队数三个核心指标。如果并发使用率持续打满、请求排队数持续上涨,同时实例数没有同步上涨,说明是扩缩容速度跟不上流量导致的前置负载均衡拒绝连接。
  • 检查调用方Axios连接配置:Node.js原生HTTP模块以及默认配置的Axios不会复用TCP连接,高负载下会短时间创建大量新TCP连接,要么触发调用方Cloud Run实例的出向连接配额限制,要么触发被调用方的入站连接阈值,直接导致TCP建链阶段被拒绝,和你给出的报错堆栈特征完全吻合。
  • 检查VPC相关配置:如果两个服务都绑定了VPC连接器,需要确认VPC子网可用IP数、VPC连接器的最大实例数是否足够支撑峰值连接量,IP耗尽时也会出现建链失败的ECONNREFUSED报错。
  • 检查入站流量控制规则:如果被调用方配置了Cloud Armor、身份校验规则或者自定义防火墙规则,高负载下可能触发限流阈值导致流量被提前拦截,返回连接拒绝错误。

解决方案

  • 调整被调用方Cloud Run扩缩容配置:根据服务实际处理能力调高单实例最大并发数(无状态API通常可设置为50200),调低自动扩缩容的CPU阈值(默认60%,可下调至40%50%加快扩容速度),同时根据峰值流量基线设置合适的最小保留实例数,避免冷启动和流量突增时的扩容滞后。
  • 优化Axios连接管理:开启TCP连接复用,参考配置如下:
const axios = require('axios');
const https = require('https');

// 创建复用连接的Axios实例
const apiClient = axios.create({
  httpsAgent: new https.Agent({
    keepAlive: true,
    maxSockets: 100, // 按需调整单实例最大并发连接数
    maxFreeSockets: 10,
    timeout: 60000
  })
});
  • 增加可重试错误的重试逻辑:针对ECONNREFUSED、ETIMEDOUT、ECONNRESET这类瞬时错误,给请求添加指数退避重试逻辑,降低瞬时扩容滞后带来的请求失败率。
  • 调整VPC连接器配置:如果使用了VPC连接器,根据峰值连接数调高连接器的最大实例数,预留足够的IP和连接配额。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:06:04