You need to enable JavaScript to run this app. Spring Boot Reactive项目R2DBC-PostgreSQL间歇性连接超时排查
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot Reactive项目R2DBC-PostgreSQL间歇性连接超时排查

Spring Boot响应式架构偶发R2DBC数据库连接超时问题

基础技术栈与配置

  • 核心框架:采用Spring Boot 2.3.1 响应式编程架构
  • 数据库访问层:使用r2dbc-postgres 0.8.7版本
  • 数据库连接配置:基于R2DBC连接池构建ConnectionFactory,设置最大连接数1000、初始连接数1,同时配置R2dbcTransactionManager作为响应式事务管理器

问题详情

目前暂未定位到响应式接口连接数据库后偶发无响应、最终触发连接超时的根因,问题呈现间歇性复现特征:重启Docker容器后接口可正常响应,但运行一段时间后会再次出现相同异常。

典型异常复现场景

以业务方法viewBySkuCodeAndCountryCode为案例:

  • 该方法通过自动注入的PlanPackageCurrencyPriceRepository调用findBySkuCodeAndCountryCode查询数据库
  • 对数据库查询返回的Mono对象做映射处理:若查询到的PlanPackageCurrencyPrice状态为ACTIVE,会调用redisTemplate写入缓存,并对Redis操作返回的Mono对象执行subscribe;若状态非ACTIVE则抛出自定义业务异常
  • 异常触发时的日志特征:触发数据库查询时,日志会输出获取R2DBC事务连接、将连接切换为手动提交模式的DEBUG信息,之后日志停止输出,等待固定时长后接口直接抛出连接超时错误
  • 数据库侧关联现象:PostgreSQL侧日志记录有could not receive data from client: Connection timed out的客户端连接超时提示;因部署应用的VM时区为GMT、PostgreSQL服务器时区为IST,两端日志时间戳无法直接对齐匹配

核心排查诉求

请协助判断该问题是响应式代码编写逻辑不当导致,还是数据库连接配置不合理引发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.31 06:54:03