• druid连接池参数配置详解


    文章目录

    druid常见问题在GitHub地址
    https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98

    配置参数

    单独使用druid的依赖

    <dependency>
        <groupId>com.alibabagroupId>
        <artifactId>druidartifactId>
        <version>1.2.11version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    可用参数配置
    参考:https://github.com/alibaba/druid/wiki/DruidDataSource%E9%85%8D%E7%BD%AE%E5%B1%9E%E6%80%A7%E5%88%97%E8%A1%A8

    spring:
      datasource:
        url: jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8
        username: root
        password: 123456
        driver-class-name: com.mysql.jdbc.Driver
        type: com.alibaba.druid.pool.DruidDataSource
        # druid配置
        # 连接池初始化时创建的连接数
        initialSize: 3
        # 连接池中最大连接数
        maxActive: 50
        # 连接池中最小空闲连接数
        minIdle: 5
        # 连接池中最大空闲连接数
        maxIdle: 10
        # 获取连接时的最大等待时间(毫秒),如达到最大连接,且所有连接被使用,获取时等待的超时时间
        maxWait: 60000
        # 间隔多久检测一次空闲连接是否有效(毫秒)
        timeBetweenEvictionRunsMillis: 60000
        # 连接池中连接最小空闲时间(毫秒),连接池中的连接被销毁的条件,连接数 > minIdle && 空闲时间 > minEvictableIdleTimeMillis
        minEvictableIdleTimeMillis: 300000
        # 连接池中连接最大空闲时间(毫秒),连接池中的连接被销毁的条件,空闲时间 > maxEvictableIdleTimeMillis,不管连接池中的连接数是否小于最小连接数
        maxEvictableIdleTimeMillis: 25200000
        # 用于检测连接是否有效的SQL语句
        validationQuery: SELECT 1
        # 是否开启空闲连接的检测,作用类似testOnBorrow
        testWhileIdle: true
        # 是否开启连接的检测功能,在获取连接时检测连接是否有效,开启会获取连接时先执行下validationQuery配置的语句看连接是否有效,所以会影响性能,
        testOnBorrow: false
        # 是否开启连接的检测功能,在归还连接时检测连接是否有效,此参数必须和testOnBorrow同时设置为true当服务端关闭,客户端才不会报错
        testOnReturn: false
        # 是否缓存PreparedStatement对象
        poolPreparedStatements: true
        # 缓存PreparedStatement对象的最大数量
        maxPoolPreparedStatementPerConnectionSize: 20
        # 配置监控统计用的filter,允许监控统计
        filters: stat
        # 配置扩展属性,用于监控统计分析SQL性能等
        connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

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

    • testWhileIdle:配置此参数猜测是只是将超出空闲时间的连接销毁,销毁后如果连接池中小于最小连接数甚至没有连接后不会立马创建连接,而是使用时创建连接,因为通过SHOW PROCESSLIST;查看当mysql服务端关闭所有客户端连接后,且过了timeBetweenEvictionRunsMillis的时间服务端还是没有看到新的连接,只有再次查询使用时才创建了一个连接,也不是创建了minIdle个连接

    配置类,配置了此类才会用配置的参数,否则是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")
        @Bean
        public DataSource dataSource() {
            DruidDataSource druidDataSource = new DruidDataSource();
            return druidDataSource;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
  • 相关阅读:
    史上最全架构师知识图谱
    XPS—专项文献阅读-科学指南针
    简洁的 Markdown 文本编辑器 Typora
    HarmonyOS NEXT中怎么理解HAR、HAP、HSP、App的关系
    C++:AVL树
    web-traffic-generator:一款功能强大的HTTP和HTTPs流量混淆工具
    SpringMVC 11 Ajax验证用户名体验和拦截器
    tail命令,实时查看日志文件
    自然语言处理基础——词表示
    Cpolar+Emlog搭建指南—在Ubuntu上轻松创建个人博客,无需专业技能
  • 原文地址:https://blog.csdn.net/weixin_43790613/article/details/133940617