Tom Hombergs 2018-08-21
1. 概述
Hikari 是一个 JDBC DataSource 的实现,提供了连接池机制。与其他实现相比,它更轻量且性能更优。
本快速教程将展示如何在 Spring Boot 3 应用程序中配置使用 Hikari DataSource。
2. 在 Spring Boot 3.x 中配置 Hikari
根据官方参考文档,Hikari 是 Spring Boot 3 中默认的 DataSource 实现。
如果你使用了 spring-boot-starter-data-jpa 或 spring-boot-starter-jdbc,Hikari 的依赖会自动包含进来。因此,在基于 Spring Boot 3.x 的应用中,若想使用 Hikari,无需额外操作。
不过,如果你想使用最新版本的 Hikari,则需要在 pom.xml 中显式添加其依赖:
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>7.0.2</version>
</dependency>
3. 调优 Hikari 配置参数
Hikari 相较于其他 DataSource 实现的一大优势是提供了丰富的配置参数。
我们可以通过在配置文件(如 application.properties 或 application.yml)中使用前缀 spring.datasource.hikari 并附加 Hikari 参数名来设置这些参数:
spring.datasource.hikari.connectionTimeout=30000
spring.datasource.hikari.idleTimeout=600000
spring.datasource.hikari.maxLifetime=1800000
...
在上述配置中,我们将连接超时时间设为 30,000 毫秒(30 秒),空闲超时时间设为 600,000 毫秒(10 分钟),连接最大生命周期设为 1,800,000 毫秒(30 分钟)。这些参数值可根据应用程序的具体需求进行调整。
所有可用的 Hikari 参数及其详细说明,可参阅 Hikari GitHub 页面 或 Spring 官方文档。
4. 使用 JMX 监控 Hikari
Hikari 支持通过 JMX(Java Management Extensions)监控其连接池。JMX 是一种 Java 技术,可在运行时管理和监控应用程序。启用 Hikari 的 JMX 功能后,我们可以深入了解连接池的健康状况和性能表现。
要启用 Hikari 的 JMX 支持,只需在 application.properties 或 application.yml 中添加以下配置属性:
spring.datasource.hikari.registerMbeans=true
启用后,Hikari 会通过 JMX 暴露其管理 Bean(MBeans)。我们可以使用各种 JMX 工具和库来访问并分析这些信息。常用的 JMX 客户端包括:
- JConsole
- VisualVM
- Prometheus + JMX Exporter
通过连接到运行应用程序的 Java 进程,并使用 JMX 客户端,我们可以获取 Hikari 提供的多项关键指标,例如:
- 连接数量:当前活跃连接数
- 池利用率:正在使用的连接所占百分比
- 连接获取时间:从池中获取连接所需的时间
- 连接创建时间:新建数据库连接所需的时间
- 连接超时次数:因超时而未能成功获取连接的尝试次数
这些指标有助于我们理解连接池的行为,并识别潜在的性能瓶颈或问题。我们还可以基于这些指标搭建监控与告警系统,在必要时采取相应措施。
5. 结论
本文介绍了如何在 Spring Boot 3.x 应用中配置 Hikari DataSource,充分利用 Spring Boot 的自动配置能力。此外,我们还强调了启用 Hikari JMX 监控的重要性,它为我们提供了对连接池行为的深入洞察和有效控制手段。