springboot2中HikariCP连接池的相关配置问题

 更新时间:2022年12月22日 15:18:15   作者:蓝色格子  
这篇文章主要介绍了springboot2中HikariCP连接池的相关配置问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

springboot2 HikariCP连接池相关配置

项目中使用了springboot2.1.4作为框架,数据库链接池选用了号称非常快的也是springboot默认支持的HikariCP作为连接池。

引入springboot完全支持,所以不需要引入额外的jar,配置文件如下:

spring:
  application:
    name: framework-manage
  profiles:
    active: dev
  #数据库连接
  datasource:
    url: jdbc:mysql://localhost:3306/rz_test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
    username: root
    password: root
    #连接池
    hikari:
      minimum-idle: 5
      maximum-pool-size: 15
      auto-commit: true
      idle-timeout: 30000
      pool-name: DatebookHikariCP
      max-lifetime: 120000
      connection-timeout: 30000
      connection-test-query: SELECT 1

在刚开始配置时候,将max-lifetime设置为1800000(网上很多博客设置均为这个),隔上一段时间不连接,就会出现以下警告,需要等待四五个这种警告后,才能请求回数据。

DatebookHikariCP - Failed to validate connection
com.mysql.cj.jdbc.ConnectionImpl@23338be2 (No operations allowed after connection closed.)
. Possibly consider using a shorter maxLifetime value.

修改过数据库的相关配置,还是不行,后来翻译了下这段话,发现是说可能考虑使用较短的maxLifetime值,这个值最小是30000,于是将其修改为30000后,又出现了下面这个警告:

DatebookHikariCP - idleTimeout is close to or more than maxLifetime, disabling it.

这个只是在启动时候出现,并不影响操作,后来查询发现,设置idleTimeout 时候有一个规则,即如果idleTimeout+1秒>maxLifetime 且 maxLifetime>0,则会被重置为0(代表永远不会退出);如果idleTimeout!=0且小于10秒,则会被重置为10秒。

于是将max-lifetime设置为了120000,这个问题不在出现。

HikariCP常用的参数配置

1.autoCommit

自动提交从池中返回的连接,默认为true。

2.connectionTimeout

等待来自池的连接的最大毫秒数,默认为30000,如果小于250毫秒,则被重置回30秒。

3.idleTimeout

连接允许在池中闲置的最长时间,默认为600000,即10分钟。

如果idleTimeout+1秒>maxLifetime 且 maxLifetime>0,则会被重置为0(代表永远不会退出);如果idleTimeout!=0且小于10秒,则会被重置为10秒。

只有当minimumIdle小于maximumPoolSize时,这个参数才生效,当空闲连接数超过minimumIdle,而且空闲时间超过idleTimeout,则会被移除。

4.maxLifetime

池中连接最长生命周期。默认为1800000,如果不等于0且小于30秒则会被重置回30分钟。

5.minimumIdle

控制连接池空闲连接的最小数量,当连接池空闲连接少于minimumIdle,而且总共连接数不大于maximumPoolSize时,HikariCP会尽力补充新的连接。

为了性能考虑,不建议设置此值,而是让HikariCP把连接池当做固定大小的处理,默认minimumIdle与maximumPoolSize一样。

当minIdle<0或者minIdle>maxPoolSize,则被重置为maxPoolSize,该值默认为10。

6.maximumPoolSize

池中最大连接数,包括闲置和使用中的连接。

默认为10。

如果maxPoolSize小于1,则会被重置。

当minIdle<=0被重置为DEFAULT_POOL_SIZE则为10;如果minIdle>0则重置为minIdle的值。

7.poolName

连接池的用户定义名称,主要出现在日志记录和JMX管理控制台中以识别池和池配置。

默认为HikariPool-1。

8.readOnly

从池中获取的连接是否默认处于只读模式。

默认为false。

9.connection-test-query

如果您的驱动程序支持JDBC4,我们强烈建议您不要设置此属性。

这是针对不支持JDBC4的“传统”驱动程序Connection.isValid() API。

这是在连接从池中获得连接以确认与数据库的连接仍然存在之前将要执行的查询。

再一次,尝试运行没有此属性的池,如果您的驱动程序不符合JDBC4的要求,HikariCP将记录一个错误以告知您。

默认值:无

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 解决java执行cmd命令调用ffmpeg报错Concat error - No such filter ''[0,0]''问题

    解决java执行cmd命令调用ffmpeg报错Concat error - No such filter ''[0,0]

    这篇文章主要介绍了java执行cmd命令,调用ffmpeg报错Concat error - No such filter '[0,0]'解决方法,本文通过截图实例代码说明给大家介绍的非常详细,对大家的工作或学习有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • IDEA类存在但找不到的解决办法

    IDEA类存在但找不到的解决办法

    本文主要介绍了IDEA类存在但找不到的解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • java开放地址法和链地址法解决hash冲突的方法示例

    java开放地址法和链地址法解决hash冲突的方法示例

    这篇文章主要介绍了java开放地址法和链地址法解决hash冲突的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • 一文教会Java新手使用Spring MVC中的查询字符串和查询参数

    一文教会Java新手使用Spring MVC中的查询字符串和查询参数

    在使用springMVC框架构建web应用,客户端常会请求字符串、整型、json等格式的数据,这篇文章主要给大家介绍了关于通过一文教会Java新手使用Spring MVC中的查询字符串和查询参数的相关资料,需要的朋友可以参考下
    2024-01-01
  • spring boot 使用utf8mb4的操作

    spring boot 使用utf8mb4的操作

    这篇文章主要介绍了spring boot 使用utf8mb4的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • springboot使用事物注解方式代码实例

    springboot使用事物注解方式代码实例

    这篇文章主要介绍了springboot使用事物注解方式代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • springboot配合Thymeleaf完美实现遍历功能

    springboot配合Thymeleaf完美实现遍历功能

    Thymeleaf显然是一个开发页面的技术,现在各种前端技术层出不穷,比如现在主流的Vue、React、AngularJS等。这篇文章主要介绍了springboot配合Thymeleaf完美实现遍历,需要的朋友可以参考下
    2021-09-09
  • Spring 5.0集成log4j2日志管理的示例代码

    Spring 5.0集成log4j2日志管理的示例代码

    本篇文章主要介绍了Spring 5.0集成log4j2日志管理的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • springmvc 防止表单重复提交的两种方法

    springmvc 防止表单重复提交的两种方法

    最近在本地开发测试的时候,遇到一个表单重复提交的现象。本文主要介绍了springmvc 防止表单重复提交的两种方法,感兴趣的可以了解一下
    2021-08-08
  • Java Spring boot 配置JDK和MAVEN开发环境的过程

    Java Spring boot 配置JDK和MAVEN开发环境的过程

    本文详细介绍了如何配置JDK和Maven环境,包括JDK的安装与环境变量设置,Maven的下载、配置环境变量和设置阿里云仓库,最后简述了在IntelliJ IDEA中配置JDK和Maven的步骤,本教程适合Java开发新手进行开发环境的搭建,确保顺利进行Java项目的开发
    2024-11-11

最新评论