Hikari 数据源参数配置描述

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hikari 数据源参数配置描述相关的知识,希望对你有一定的参考价值。

参考技术A ###############################################hikari############################################
spring.datasource.type=com.zaxxer.hikari.HikariDataSource

spring.datasource.hikari.dataSourceClassName=
spring.datasource.url=jdbc: mysql://127.0.0.1:3306/test?characterEncoding=UTF8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.hikari.autoCommit=true

spring.datasource.hikari.connectionTimeout=30000

spring.datasource.hikari.idleTimeout=30000

spring.datasource.hikari.minimumIdle=

spring.datasource.hikari.maximumPoolSize=10

spring.datasource.hikari.maxLifetime=1800000

spring.datasource.hikari.connectionTestQuery=

spring.datasource.hikari.metricRegistry=

spring.datasource.hikari.healthCheckRegistry=

spring.datasource.hikari.poolName=hikariPool

##########################HikariCP不常用的配置#####################
spring.datasource.hikari.initializationFailTimeout=1

spring.datasource.hikari.isolateInternalQueries=false

spring.datasource.hikari.allowPoolSuspension=false

spring.datasource.hikari.readOnly=false

spring.datasource.hikari.registerMbeans=false

spring.datasource.hikari.connectionInitSql=

spring.datasource.hikari.driverClassName=com.mysql.jdbc.Driver

spring.datasource.hikari.validationTimeout=5000

spring.datasource.hikari.leakDetectionThreshold=0

spring.datasource.hikari.threadFactory=

spring.datasource.hikari.scheduledExecutor=

spring.datasource.hikari.catalog=

spring.datasource.hikari.schema=

如何在 Spring Boot 应用程序中使用 hikari 配置自动重新连接?

【中文标题】如何在 Spring Boot 应用程序中使用 hikari 配置自动重新连接?【英文标题】:How to configure auto reconnection with hikari in SpringBoot application? 【发布时间】:2019-11-28 01:31:11 【问题描述】:

我们使用的是 SpringBoot 2.1.x 版本,所以 Hikari 是默认的 DataSource 实现。但是,我不确定如何配置 Hikari 设置以在数据库维护/重启或网络连接问题后自动重新连接到我们的 Oracle 数据库。

我们有以下 hikari 设置,但它似乎没有帮助。

account.datasource.url: jdbc:oracle:thin:@myserver:1521:DEV
account.datasource.username: user
account.datasource.password: xxxx
account.datasource.driverClassName: oracle.jdbc.driver.OracleDriver

account.datasource.hikari.connection-timeout: 30000
account.datasource.hikari.maximum-pool-size: 3
account.datasource.hikari.idle-timeout: 60000
account.datasource.hikari.max-lifetime: 1800000
account.datasource.hikari.minimum-idle: 2

与数据库的网络连接恢复后重新连接失败。

获取JDBC连接失败;嵌套异常是 java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30033ms.

任何其他 account.datasource.hikari.xxxxx 将有助于自动重新连接到数据库?

【问题讨论】:

【参考方案1】:

来自 HikariCP docs:

连接测试查询

如果您的驱动程序支持 JDBC4,我们强烈 建议不要设置此属性。这适用于“传统”驱动程序 不支持 JDBC4 Connection.isValid() API。这是查询 这将在从给您提供连接之前执行 验证与数据库的连接是否仍然存在的池 活。再次尝试在没有此属性的情况下运行池 HikariCP 如果您的驱动程序不兼容 JDBC4 将记录一个错误以让您 知道。默认值:无

所以我建议验证您的 JDBC 驱动程序实际上是否符合 JDBC4。如果不是 - 设置上述属性。

【讨论】:

2019-07-19 08:26:24.158 --- com.zaxxer.hikari.HikariDataSource: HikariPool-1 - 开始... 2019-07-19 08:26:24.161 --- com.zaxxer.hikari.util.DriverDataSource:未找到已注册的驱动程序 driverClassName=oracle.jdbc.driver.OracleDriver,正在尝试直接实例化。 2019-07-19 08:26:25.375 --- com.zaxxer.hikari.pool.PoolBase: HikariPool-1 - 驱动程序不支持获取/设置连接的网络超时。 (oracle.jdbc.driver.T4CConnection.getNetworkTimeout()I) 2019-07-19 08:26:25.430 --- com.zaxxer.hikari.HikariDataSource: HikariPool-1 - 启动完成。 谢谢。我在日志中没有看到任何错误,所以 JDBC 4 投诉,对吧? 我们发现了重新连接的问题。上述设置实际上负责自动重新连接。但是,我们内部存在网络服务器问题,导致了包括重新连接在内的各种问题。干得好 Hikari 数据源。

以上是关于Hikari 数据源参数配置描述的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot Hikari 配置

使用 Spring Boot 的 Mysql 的 Hikari 配置

配置(1):springboot yml配置连接池(druid,hikari),mybatis,json,log

hikari为什么不需要配置连接池初始化大小

数据库故障后的 Hikari CP (Spring Boot) 连接恢复问题

Springboot整合Hikari数据库连接池,密码加密