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

[Java实战]Spring Boot整合达梦数据库连接池配置(三十四)

[Java实战]Spring Boot整合达梦数据库连接池配置(三十四)

一、HikariCP连接池配置(默认)

1. 基础配置(application.yml

spring:datasource:driver-class-name: dm.jdbc.driver.DmDriverurl: jdbc:dm://localhost:5236/DB_NAME?schema=SYSDBAusername: SYSDBApassword: SYSDBA# HikariCP连接池配置hikari:pool-name: DM-HikariPoolconnection-timeout: 30000  # 连接超时时间(ms)maximum-pool-size: 20      # 最大连接数minimum-idle: 5           # 最小空闲连接idle-timeout: 600000      # 空闲连接超时时间(ms)max-lifetime: 1800000     # 连接最大存活时间(ms)connection-test-query: SELECT 1 FROM DUAL

2. 验证配置生效

在应用启动日志中搜索 HikariPool-1 - Starting... 确认连接池初始化成功:

2024-05-26 14:20:00.123 INFO  [main] com.zaxxer.hikari.HikariDataSource 
- HikariPool-1 - Starting...
2024-05-26 14:20:01.456 INFO  [main] com.zaxxer.hikari.HikariDataSource 
- HikariPool-1 - Start completed.

二、Druid连接池配置(推荐监控功能)

1. 添加Druid依赖(pom.xml

<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.18</version>
</dependency><!-- 达梦JDBC驱动 --><dependency><groupId>com.dameng</groupId><artifactId>Dm8JdbcDriver18</artifactId><version>8.1.1.49</version></dependency>

2. 完整配置(application.yml

spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: dm.jdbc.driver.DmDriverurl: jdbc:dm://localhost:5236/DB_NAME?schema=SYSDBAusername: SYSDBApassword: SYSDBAdruid:# 连接池核心配置initial-size: 5min-idle: 5max-active: 20max-wait: 60000# 监控配置filter:stat:enabled: truelog-slow-sql: trueslow-sql-millis: 2000web-stat-filter:enabled: truestat-view-servlet:enabled: trueurl-pattern: /druid/*login-username: adminlogin-password: admin123

3. 添加达梦方言配置类

@Configuration
public class DruidConfig {@Beanpublic DruidStatInterceptor druidStatInterceptor() {return new DruidStatInterceptor();}@Bean@Role(BeanDefinition.ROLE_INFRASTRUCTURE)public Advisor druidStatAdvisor() {return new DefaultPointcutAdvisor(new AnnotationMatchingPointcut(WebService.class, null),druidStatInterceptor());}
}

4. 访问监控页面

启动应用后访问监控面板:
http://localhost:8080/druid/login.html
使用配置的用户名密码登录(示例中为admin/admin123

三、连接池验证测试

测试1:连接泄漏检测

@SpringBootTest
public class ConnectionLeakTest {@Autowiredprivate DataSource dataSource;@Testpublic void testConnectionLeak() throws SQLException {for(int i=0; i<30; i++) {Connection conn = dataSource.getConnection();// 未关闭连接,触发连接池警告System.out.println("获取连接:"+conn);}}
}

预期日志

ERROR [alibaba.druid.pool.DruidDataSource] - discard connection, 
activeCount 20, maxActive 20

测试2:性能压力测试

使用JMeter模拟100并发查询请求,观察连接池表现:

监控指标正常范围异常处理建议
ActiveCount<= maxActive调大maxActive
WaitThreadCount持续>0检查慢SQL或连接泄漏
PoolingCount≈ maxActive/2调整initialSize/minIdle

四、生产环境最佳实践

1. 连接池参数建议

druid:max-active: 50            # 根据DB最大连接数设置initial-size: 10min-idle: 10max-wait: 3000            # 获取连接超时时间time-between-eviction-runs-millis: 60000  # 检测间隔min-evictable-idle-time-millis: 300000     # 最小空闲时间

2. 安全加固

druid:filter:wall:config:delete-allow: false   # 禁止DELETE无WHEREdrop-table-allow: false

3. 定期监控指标

  • 活跃连接数DataSource.getActiveCount()
  • 等待线程数DataSource.getWaitThreadCount()
  • SQL执行时间:通过Druid监控页查看

五、常见问题解决

问题1:连接池初始化失败

错误信息Failed to initialize pool: Unknown database 'DB_NAME'
解决方案

  1. 检查达梦服务是否运行
  2. 验证数据库名称是否正确
  3. 确认用户权限:SYSDBA默认有DBA权限

问题2:连接泄漏

现象:活跃连接数持续增长不释放
排查步骤

  1. 启用Druid的removeAbandoned配置
    druid:remove-abandoned: trueremove-abandoned-timeout: 300  # 5分钟未关闭连接强制回收
    
  2. 分析日志中abandoned connection警告定位代码

希望本教程对您有帮助,请点赞❤️收藏⭐关注支持!欢迎在评论区留言交流技术细节!

http://www.lryc.cn/news/2387117.html

相关文章:

  • windows 下用yolov5 训练模型 给到opencv 使用
  • Spark集群架构解析:核心组件与Standalone、YARN模式深度对比(AM,Container,Driver,Executor)
  • Linux Kernel调试:强大的printk(二)
  • Kafka Kraft模式集群 + ssl
  • [crxjs]自己创建一个浏览器插件
  • 类的设计模式——单例、工厂以及建造者模式
  • STM32之看门狗(IWDG)
  • PyTorch实现MLP信用评分模型全流程
  • 语音识别——文本转语音
  • 跟着华为去变革 ——读《常变与长青》有感
  • 图像分割技术的实现与比较分析
  • node.js配置变量
  • Ubuntu+Docker+内网穿透:保姆级教程实现安卓开发环境远程部署
  • 为什么需要清除浮动?清除浮动的方式有哪些?
  • 计算机网络学习20250526
  • ArkUI:鸿蒙应用响应式与组件化开发指南(一)
  • YOLOv11改进 | Neck篇 | 双向特征金字塔网络BiFPN助力YOLOv11有效涨点
  • C/C++的OpenCV 进行轮廓提取
  • 计算机网络总结(物理层,链路层)
  • TIGER - 一个轻量高效的语音分离模型,支持人声伴奏分离、音频说话人分离等 支持50系显卡 本地一键整合包下载
  • yolov8,c++案例汇总
  • 无人机降落伞设计要点难点及原理!
  • 20250526给荣品PRO-RK3566的Android13单独编译boot.img
  • vue3项目动态路由的相关配置踩坑记录
  • git子模块--命令--列表版
  • C++(4)
  • 构建版本没mac上传APP方法
  • 如何解决大模型返回的JSON数据前后加上```的情况
  • 本地处理 + GPU 加速 模糊视频秒变 4K/8K 修复视频老旧素材
  • 服务器异常数据问题解决 工具(tcpdump+wireshark+iptables)