Cloud Run经VPC Connector连接Cloud SQL随机超时问题求助
Cloud Run 部署时Cloud SQL连接随机超时问题(全流量走VPC Connector场景)
问题背景
我计划部署一个Cloud Run服务,核心配置如下:
- Cloud SQL连接:关联1个Cloud SQL实例
- VPC网络:使用Serverless VPC Access Connector,所有流量均通过该连接器路由
部署使用命令:
gcloud run services replace cloudrun.yaml --platform managed --region us-east1 --project my-project --format json
遇到的问题
创建新服务时约75%概率部署失败,报错信息:
Cloud SQL connection failed. Please see https://cloud.google.com/sql/docs/mysql/connect-run for additional details: connection to Cloud SQL instance at <public-ip>:3307 failed: timed out after 10s
额外信息:
- 所有资源(Cloud Run、VPC、VPC Access Connector、Cloud SQL、NAT网关)均位于us-east1区域,可关联VPC的资源已绑定同一VPC
- 将Connector设置为「仅通过VPC连接器路由到私有IP的请求」时,Cloud SQL连接正常,但不符合业务需求
- 仅修改服务名称的同一yaml重新部署,成功概率仅25%,失败具有随机性
排查与解决方案
1. 扩容Serverless VPC Access Connector
全流量走Connector时,部署阶段Cloud Run的初始化请求会占用Connector的并发连接配额。如果Connector的规格过小,会导致随机连接超时:
- 查看Connector的监控指标(如
active_connections、connection_attempts),确认是否达到并发阈值 - 升级Connector的机器类型(比如从
e2-micro改为e2-small)或增加实例数量,提升并发处理能力
2. 验证NAT网关与公网访问规则
当全流量通过Connector路由时,Cloud Run访问Cloud SQL公网IP的流量会经过VPC的NAT网关,需确保:
- NAT网关配置正常,能正常转发公网出站流量
- Cloud SQL的公网IP白名单包含NAT网关的公网IP(或临时设置为允许所有IP做测试)
- VPC防火墙规则允许Connector子网到Cloud SQL公网IP 3307端口的出站流量
3. 优化容器启动时的连接逻辑
部署超时可能是容器启动后立即尝试连接Cloud SQL,而此时Connector网络尚未完全就绪:
- 在容器启动脚本中添加连接重试逻辑,比如连接失败时等待3-5秒后重试,最多重试5次
- 在Cloud Run配置yaml中增大
timeoutSeconds(比如设置为300),给容器更长的启动初始化时间
4. 改用Cloud SQL私有IP连接(推荐稳定方案)
如果业务场景允许,建议为Cloud SQL启用私有IP并绑定到同一VPC:
- Cloud Run通过Connector直接访问Cloud SQL私有IP,无需走公网,避开NAT和公网白名单的限制,连接稳定性大幅提升
- 此方案完全适配「全流量走Connector」的业务需求
5. 检查Connector路由配置
确认Connector的「所有流量路由」配置生效,且VPC路由表无冲突:
- 检查VPC路由表,确认Connector的路由条目优先级正确,未被其他路由覆盖
- 验证Connector的子网与Cloud SQL所在网络的连通性
内容的提问来源于stack exchange,提问作者August
相关产品推荐
相关产品推荐

