Cloud Run连接PostgreSQL首次尝试间歇性失败问题排查求助
Cloud Run容器首次连接PostgreSQL超时问题排查
环境配置
- 部署6个Cloud Run容器,均配置2GiB内存、1核CPU及1个最小实例,Dockerfile高度相似,用于运行简单Express服务
- 使用部署在Cloud SQL上的PostgreSQL数据库(配置2 vCPU、8GB内存),所有Cloud Run容器均可访问该数据库
- 通过Prisma实现数据库访问,其中一个Cloud Run容器基于BullMQ处理按需简单任务,其基础设施配置与其他容器基本一致
问题现象
- 仅上述任务处理容器偶尔出现Prisma无法连接数据库的情况
- 问题通常仅发生在容器重启后的首次数据库连接尝试,重启后间隔时间不定(最长可达数小时)
- 其他Cloud Run容器几乎无活动,数据库访问量始终极低
- 具体错误信息:
Timed out fetching a new connection from the connection pool. More info: http://pris.ly/d/connection-pool (Current connection pool timeout: 10, connection limit: 5) - 由于是首次连接,不存在连接池连接不足的问题;正常情况下连接获取速度为毫秒级,失败时会耗尽10秒超时时间后报错
已尝试的解决方法
- 将Prisma的超时时间调整为20秒,连接限制提升至10个,问题仍存在
- 添加连接重试机制(3次重试):有时3次重试后仍失败,有时仅失败0-2次,但手动进行第4次重试时总能成功
- 将Prisma的超时时间设为无限,目前未再出现失败,但尝试次数较少,且正常连接速度仍为毫秒级
排除Prisma作为问题根源的依据
- 仅该任务处理Cloud Run容器出现此问题,所有容器使用相同的Prisma配置(仅连接池参数不同)
- 预发布和生产环境中的同一任务Cloud Run容器均出现此问题
复现尝试
- 等待数小时无请求后重试,未成功复现问题
- 手动部署新Cloud Run实例,待其接管所有流量后发起首次请求,未成功复现问题(尽管多数甚至所有失败均发生在首次请求)
内容的提问来源于stack exchange,提问作者Arnav Mishra
相关产品推荐
相关产品推荐

