HikariCP连接池设置和监控

HikariCP连接池设置和监控

调整pool参数

SpringBoot 项目默认自动使用 HikariCP, 最近为了进行数据库session控制, 特意调小了缺省的 poolSize, 原本以为会自动生效, 经过压测发现还是使用默认的 poolSize.

原来的代码 DataSource 对象使用的是 Spring DataSource builder创建的, 需要修改为 HikariDataSource 来创建.

我直接使用 https://blog.csdn.net/abu935009066/article/details/127155653 文章中的代码.

监控 HikariCP

我们需要监控到数据库连接池设置是否合理, 所以需要有手段能监控到连接池对应的指标, HikariCP 提供了 LoggingMeterRegistry 是一个非常好的监控手段, 将指标输出日志, 便于长期分析.

具体使用参考 https://blog.csdn.net/abu935009066/article/details/127155653

HikariCP 监控指标.

一般情况下, 只要监控看两个指标就足够了:

如果 hikaricp.connections.pending 指标经常性大于0, 说明poolSize偏小了. 2

如果 hikaricp.connections.idle 指标非常接近 poolSize, 说明poolSize偏大了.

指标 详解

hikaricp.connections 当前总连接数,包括空闲的连接和使用中的连接。(4 = 3 + 1)对应上面日志;

Connections = activeConnection + idleConnections,会随着连接使用情况变化。

hikaricp.connections.active 正在使用中活跃连接数 (1),会随着连接使用情况变化。

hikaricp.connections.idle 空闲连接数 (3) ,会随着连接使用情况变化。

hikaricp.connections.max 最大连接数 (10),初始配置。

hikaricp.connections.min 最小连接数 (3),初始配置。

hikaricp.connections.pending 正在等待连接的线程数量(0)。重点:一般来说,这里应该都是0,如果存在这个数据并且时间较长要触发告警,视情况加大最大连接数。

hikaricp.connections.acquire 获取每个连接需要时间,单位为ns。

hikaricp.connections.creation 连接创建时间,单位为ms。

hikaricp.connections.timeout 创建连接超时次数。

hikaricp.connections.usage 连接从池中取出到返回的时间,单位为ms。即连接被业务占用时间(3.017s)。重点:这个时间长的话,

可能是慢SQL或者长事务导致连接被占用问题。

HikariCP 的配置参数

摘自

# 不同数据源这四个配置都会用到

spring.datasource.url=jdbc:mysql://localhost:3306/test

spring.datasource.username=root

spring.datasource.password=123456

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

#以下的配置项是hikari特有的配置

# 等待连接池分配连接的最大时长(毫秒),超过这个时长还没可用的连接则发生SQLException, 默认:30秒

spring.datasource.hikari.connection-timeout=30000

# 最小连接数

spring.datasource.hikari.minimum-idle=5

# 最大连接数

spring.datasource.hikari.maximum-pool-size=15

# 自动提交

spring.datasource.hikari.auto-commit=true

# 一个连接idle状态的最大时长(毫秒),超时则被释放(retired),默认:10分钟

spring.datasource.hikari.idle-timeout=600000

# 连接池名字

spring.datasource.hikari.pool-name=DatebookHikariCP

# 一个连接的生命时长(毫秒),超时而且没被使用则被释放(retired),默认:30分钟 1800000ms,建议设置比数据库超时时长少60秒

spring.datasource.hikari.max-lifetime=28740000

spring.datasource.hikari.connection-test-query=SELECT 1

#以下是针对MYSQL驱动的配置参数

# 在每个连接中缓存的语句的数量。默认值为保守值25。建议将其设置为250-500之间

spring.datasource.hikari.prepStmtCacheSize = 300

# 缓存的已准备SQL语句的最大长度,默认值是256,但是往往这个长度不够用

spring.datasource.hikari.prepStmtCacheSqlLimit = 2048

# 缓存开关,如果这里设置为false,上面两个参数都不生效

spring.datasource.hikari.cachePrepStmts = true

#较新版本的 MySQL 支持服务器端准备好的语句,这可以提供实质性的性能提升

spring.datasource.hikari.useServerPrepStmts = true

相关作品

原始传奇红名 beat365正规吗

原始传奇红名

❤️ 348 📅 11-04
速度与激情8多姆为什么背叛大家 多姆叛变的原因揭秘 365体育官网全球最大

速度与激情8多姆为什么背叛大家 多姆叛变的原因揭秘

❤️ 515 📅 09-24
如何在MuMu模擬器中設置虛擬定位? 365体育官网全球最大

如何在MuMu模擬器中設置虛擬定位?

❤️ 138 📅 01-11