HikariCP连接池设置和监控

您所在的位置:网站首页 jdbc连接池druid HikariCP连接池设置和监控

HikariCP连接池设置和监控

#HikariCP连接池设置和监控| 来源: 网络整理| 查看: 265

HikariCP连接池设置和监控 原创

HarryChinese 2023-04-09 10:02:48 ©著作权

文章标签 SpringBoot spring 连接数 缓存 文章分类 Python 后端开发

©著作权归作者所有:来自51CTO博客作者HarryChinese的原创作品,请联系作者获取转载授权,否则将追究法律责任 调整pool参数

SpringBoot 项目默认自动使用 HikariCP, 最近为了进行数据库session控制, 特意调小了缺省的 poolSize, 原本以为会自动生效, 经过压测发现还是使用默认的 poolSize. 原来的代码 DataSource 对象使用的是 Spring DataSource builder创建的, 需要修改为 HikariDataSource 来创建.

监控 HikariCP

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

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

收藏 评论 分享 举报

上一篇:Xml to Model 工具网站

下一篇:aspnet core系统优雅停机升级



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3