HikariCP连接池设置和监控

HikariCP连接池设置和监控调整pool参数SpringBoot项目默认自动使用HikariCP,最近为了进行数据库session控制,特意调小了缺省的poolSize,原本以为会自动生效,经过压测发现还是使用默认的poolSize.原来的代码DataSource对象使用的是SpringDataSo

大家好,欢迎来到IT知识分享网。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 监控指标.

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

  1. 如果 hikaricp.connections.pending 指标经常性大于0, 说明poolSize偏小了. 2
  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 的配置参数

摘自 <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

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/31081.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信