当前位置: 首页 > news >正文

SpringBoot3 + Druid + DynamicDataSource + PgSQL 连接池优化方案

问题描述

使用 SpringBoot + Druid + DynamicDataSource + PgSQL 时遇到的连接过多未释放问题,一方面是升级DB Core对DB做Tuning,另一方面是优化Druid数据库连接池方案。

关键优化方向

  1. 连接泄漏检测与回收

  2. 连接有效性验证

  3. 合理的连接池大小配置

  4. 闲置连接回收

  5. 超时控制

Druid 连接池关键优化参数

基础配置

spring:datasource:druid:# 初始化连接数initial-size: 5# 最小空闲连接数min-idle: 5# 最大活跃连接数max-active: 20# 获取连接时最大等待时间(毫秒)max-wait: 60000

连接泄漏检测

      # 是否启用泄漏检测remove-abandoned: true# 连接泄漏超时时间(秒)remove-abandoned-timeout: 300# 泄漏检测日志log-abandoned: true

连接有效性验证

      # 申请连接时检测test-on-borrow: true# 归还连接时检测test-on-return: false# 空闲时检测test-while-idle: true# 验证查询(PostgreSQL)validation-query: SELECT 1# 验证查询超时时间(秒)validation-query-timeout: 1# 空闲连接检测间隔(毫秒)time-between-eviction-runs-millis: 60000# 连接最小空闲时间(毫秒)min-evictable-idle-time-millis: 300000# 保持空闲连接存活的最小时长(毫秒)keep-alive: true

超时控制

      # 连接超时时间(秒)connect-timeout: 10# 查询超时时间(秒)query-timeout: 30# 事务超时时间(秒)transaction-query-timeout: 30

监控配置

      # 启用监控统计stat-view-servlet:enabled: trueurl-pattern: /druid/*# 配置监控统计的过滤器web-stat-filter:enabled: trueurl-pattern: /*

针对 DynamicDataSource 的特殊考虑

由于您使用了动态数据源,还需要注意:

  1. 每个数据源的独立配置:确保为每个数据源单独配置连接池参数

  2. 默认数据源配置:为主数据源设置合理的默认值

  3. 连接池隔离:不同业务使用不同数据源时,连接池应完全隔离

优化实施建议

  1. 监控先行:先启用 Druid 的监控功能(/druid),分析当前连接池状态

  2. 逐步调整:从保守参数开始,逐步调整到最优值

  3. 压力测试:调整后进行压力测试,观察连接池行为

  4. 日志分析:关注连接泄漏日志,修复应用代码中的连接泄漏问题

  5. 结合 PgSQL 配置:同时调整 PostgreSQL 的max_connections参数,确保与连接池配置协调

典型问题排查

  1. 如果发现连接数持续增长不释放,优先检查remove-abandoned相关配置

  2. 如果出现连接获取超时,检查max-waitmax-active配置

  3. 如果出现连接失效问题,加强validation-query和空闲检测配置

通过以上优化,应该能有效解决连接不释放导致的堵塞问题。

相关文章:

  • spring中RequestContextHolder
  • 【WEB3】区块链、隐私计算、AI和Web3.0——隐私计算(2)
  • AI赋能高频PCB信号完整性优化
  • Ubuntu上安装MySQL 8并配置Navicat远程连接
  • Redis如何实现分布式锁
  • CFCA受邀参加盛京银行手机银行7.0发布会
  • crontab
  • 5月8日星期四今日早报简报微语报早读
  • 红外遥控与NEC编码协议详解
  • C#学习7_面向对象:类、方法、修饰符
  • 【AI】DeepWiki 页面转换成 Markdown 保存 - Chrome 扩展
  • 【速通RAG实战:索引】5.RAG分块策略与Embedding技术
  • React -> AI组件 -> 调用Ollama模型, qwen3:1.7B非常聪明
  • 基础算法系列——树的入门
  • Linux_进程退出与进程等待
  • (14)Element Plus项目综合案例
  • 在Hugging Face网站像Github一样克隆repository到本地的具体步骤
  • bootstrap入门
  • 从代码学习深度学习 - 单发多框检测(SSD)PyTorch版
  • nputop:交互式 Ascend NPU 进程查看器(nvitop昇腾版)
  • 人民财评:网售“婴儿高跟鞋”?不能让畸形审美侵蚀孩子身心
  • 【社论】职业上新,勇于“尝新”
  • 早期投资人蜂巧资本清仓泡泡玛特套现超22亿港元,称基金即将到期
  • 泽连斯基称与特朗普通话讨论停火事宜
  • 习近平同俄罗斯总统普京会谈
  • 视频丨习近平同普京会谈:共同弘扬正确二战史观,维护联合国权威和地位