全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-18 8 分钟 ✍️ juanwangdev

Spring 连接池配置详解

连接池是数据库访问性能优化的核心组件,合理配置直接影响系统吞吐量。

主流连接池对比

特性HikariCPDruidC3P0
性能最高
监控基础完善基础
配置复杂度简单中等复杂

HikariCP 配置

基础配置

YAML
spring:
  datasource:
    hikari:
      maximum-pool-size: 20
      minimum-idle: 5
      connection-timeout: 30000
      idle-timeout: 600000
      max-lifetime: 1800000
      pool-name: MyHikariPool

核心参数详解

参数默认值说明
maximum-pool-size10最大连接数
minimum-idle同 maximum最小空闲连接数
connection-timeout30000ms获取连接超时时间
idle-timeout600000ms空闲连接存活时间
max-lifetime1800000ms连接最大存活时间

Druid 配置

Maven 依赖

XML
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.20</version>
</dependency>

配置示例

YAML
spring:
  datasource:
    druid:
      initial-size: 5
      min-idle: 5
      max-active: 20
      max-wait: 60000
      time-between-eviction-runs-millis: 60000
      min-evictable-idle-time-millis: 300000
      validation-query: SELECT 1
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false
      pool-prepared-statements: true
      max-pool-prepared-statement-per-connection-size: 20

连接数计算公式

Java
连接数 = (核心数 * 2) + 有效磁盘数

对于 CPU 密集型应用,连接数可适当减少;对于 IO 密集型应用,可适当增加。

性能优化建议

1. 连接池大小

YAML
// 生产环境推荐配置
// CPU: 8核, 磁盘: 1块SSD
// 最优连接数 ≈ (8 * 2) + 1 = 17
maximum-pool-size: 20
minimum-idle: 5

2. 超时设置

YAML
spring:
  datasource:
    hikari:
      connection-timeout: 30000    # 获取连接超时
      idle-timeout: 600000         # 空闲连接超时
      max-lifetime: 1800000        # 连接最大生命周期
      connection-test-query: SELECT 1

3. 连接泄露检测

YAML
spring:
  datasource:
    hikari:
      leak-detection-threshold: 60000  # 连接泄露检测阈值

监控配置

Druid 监控

Java
spring:
  datasource:
    druid:
      stat-view-servlet:
        enabled: true
        url-pattern: /druid/*
        login-username: admin
        login-password: admin
      web-stat-filter:
        enabled: true
        url-pattern: /*

HikariCP 监控

text
@Bean
public HikariDataSource dataSource(DataSourceProperties properties) {
    HikariDataSource dataSource = properties.initializeDataSourceBuilder()
        .type(HikariDataSource.class).build();
    // 通过 JMX 监控
    dataSource.setRegisterMbeans(true);
    return dataSource;
}

要点总结

要点说明
连接数公式(CPU核心数 × 2) + 有效磁盘数
最小空闲设置合理值避免频繁创建
超时时间connection-timeout 不宜过长
监控生产环境必须开启监控
泄露检测开发环境开启,定位问题

📝 发现内容有误?点击此处直接编辑

← 上一篇 Spring 缓存策略深度解析
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库