druid连接池参数配置详解

时间: 2023-12-16 admin 维修知识

druid连接池参数配置详解

druid连接池参数配置详解

文章目录

  • 配置参数

druid常见问题在GitHub地址
/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98

配置参数

单独使用druid的依赖

<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.11</version>
</dependency>

可用参数配置
参考:

spring:datasource:url: jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8username: rootpassword: 123456driver-class-name: com.mysql.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSource# druid配置# 连接池初始化时创建的连接数initialSize: 3# 连接池中最大连接数maxActive: 50# 连接池中最小空闲连接数minIdle: 5# 连接池中最大空闲连接数maxIdle: 10# 获取连接时的最大等待时间(毫秒),如达到最大连接,且所有连接被使用,获取时等待的超时时间maxWait: 60000# 间隔多久检测一次空闲连接是否有效(毫秒)timeBetweenEvictionRunsMillis: 60000# 连接池中连接最小空闲时间(毫秒),连接池中的连接被销毁的条件,连接数 > minIdle && 空闲时间 > minEvictableIdleTimeMillisminEvictableIdleTimeMillis: 300000# 连接池中连接最大空闲时间(毫秒),连接池中的连接被销毁的条件,空闲时间 > maxEvictableIdleTimeMillis,不管连接池中的连接数是否小于最小连接数maxEvictableIdleTimeMillis: 25200000# 用于检测连接是否有效的SQL语句validationQuery: SELECT 1# 是否开启空闲连接的检测,作用类似testOnBorrowtestWhileIdle: true# 是否开启连接的检测功能,在获取连接时检测连接是否有效,开启会获取连接时先执行下validationQuery配置的语句看连接是否有效,所以会影响性能testOnBorrow: false# 是否开启连接的检测功能,在归还连接时检测连接是否有效testOnReturn: false# 是否缓存PreparedStatement对象poolPreparedStatements: true# 缓存PreparedStatement对象的最大数量maxPoolPreparedStatementPerConnectionSize: 20# 配置监控统计用的filter,允许监控统计filters: stat# 配置扩展属性,用于监控统计分析SQL性能等connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

注意:避免数据库单方面关闭连接,可查询mysql:show variables like ‘%timeout%’;
关注interactive_timeout和 wait_timeout,默认为8个小时,解决办法
minEvictableIdleTimeMillis < maxEvictableIdleTimeMillis && maxEvictableIdleTimeMillis + timeBetweenEvictionRunsMillis < 服务端的wait_timeout

配置类,配置了此类才会用配置的参数,否则是druid默认的参数值

package druid.config;import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import javax.sql.DataSource;@Configuration
public class DataSourceConfiguration {@ConfigurationProperties(prefix = "spring.datasource")@Beanpublic DataSource dataSource() {DruidDataSource druidDataSource = new DruidDataSource();return druidDataSource;}
}