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

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和空闲检测配置

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

http://www.xdnf.cn/news/4717.html

相关文章:

  • Matlab 镍氢电池模型
  • 流批了,低调使用
  • 巧用python之--模仿PLC(PLC模拟器)
  • C++ STL入门:vecto容器
  • 四川安全员考试的内容包括哪些?
  • 2025年微服务架构关键知识点(一):核心原则与演进趋势
  • Web 架构之高可用基础
  • 基于FPGA的血氧和心率蓝牙监测系统设计-max30102
  • SHA系列算法
  • 秋招准备——2.跨时钟相关
  • 大疆无人机(全系列,包括mini)拉流至电脑,实现直播
  • 机器学习第一讲:机器学习本质:让机器通过数据自动寻找规律
  • SpringCloud服务拆分:Nacos服务注册中心 + LoadBalancer服务负载均衡使用
  • 使用C# ASP.NET创建一个可以由服务端推送信息至客户端的WEB应用(2)
  • 视频编解码学习六之视频采集和存储
  • Linux环境下部署MaxScale
  • 安卓基础(静态方法)
  • 企业级可观测性实现:OpenObserve云原生平台的本地化部署与远程访问解析
  • DeepSeek+即梦AI实战:图片制作教程
  • 电机的控制字和状态字各个位在各个模式下的含义
  • Maven使用教程
  • flutter利用 injectable和injectable_generator 自动get_it注册
  • 最新阿里九宫格识别模型,连线,231 协议算法
  • 【Python从入门到精通】--‘@‘符号的作用
  • 架空输电线巡检机器人轨迹优化设计
  • 探索网络设备安全:Shodan 的原理与合法应用
  • Early clock flow
  • web 自动化之 selenium+webdriver 环境搭建及原理讲解
  • 图书推荐(协同过滤)算法的实现:基于订单购买实现相似用户的图书推荐
  • Python在自动驾驶实时数据处理中的应用:让AI驾驶更智能、更高效