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

[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.xdnf.cn/news/9125.html

相关文章:

  • AI智能分析网关V4室内消防逃生通道占用检测算法打造住宅/商业/工业园区等场景应用方案
  • TensorFlow 的基本概念和使用场景
  • C/C++---类型转换运算符
  • WireShark网络抓包—详细教程
  • TinyVue v3.23.0 正式发布:增加 NumberAnimation 数字动画组件、支持全局配置组件的 props
  • 深入解析操作系统内核与用户空间以及内核态与用户态转换
  • Prompt Tuning与自然语言微调对比解析
  • 视频存储开源方案
  • Jupyter Notebook 完全指南:从入门到高效使用
  • OpenFOAM 字典系统与求解器配置解析机制
  • ApplicationRunner接口和@PostConstruct注解
  • 如何选择自动化编程平台
  • 基于Android的个人健康管理系统APP
  • Python 爬虫入门
  • ViT- an image is worth 16x16 words- transformers for image recognition at scale
  • YOLOv11改进 | Neck篇 | 双向特征金字塔网络BiFPN助力YOLOv11有效涨点
  • Python学习笔记--Django 表单处理
  • Django orm详解--组成部件
  • 限制 SSH 访问仅允许特定 IP 连接
  • 基于线性回归的短期预测
  • SAST国标分析︱灵脉AI深度兼容GB/T 34943/34944-2017源代码漏洞测试规范
  • LINUX526 回顾 配置ssh rsync定时备份(未完成)
  • OpenCV CUDA模块图像过滤------创建一个 Scharr 滤波器函数createScharrFilter()
  • 第12次04 :首页展示用户名
  • 数据仓库维度建模详细过程
  • 频繁报FTPResponse 421 received.Server closed connection
  • 1. 数据结构
  • 《软件工程》第 8 章 - 人机交互设计
  • QML设计登录界面
  • 基于FPGA的IIC多通道选择器(IIC Switch/Bridge)