HikariCP重要参数配置

概述

HikariCP是Spring Framework 5.0的默认 数据库连接池,这得益于他的高性能。但是如果配置不当,数据库连接池也可能因影响到系统性能。

重要参数

  • maximum-pool-size
  • minimum-idle
  • pool-name
  • auto-commit
  • idle-timeout
  • max-lifetime
  • connection-timeout
初始化过程和连接创建逻辑

当HikariCP初始化时候,会将添加连接到池中,直到达到minimum-idle的数量,此时保持这个状态。当有新的连接池请求时,HikariCP会返回一个connection的代理。当connection都处于使用状态时,若此时有新的连接池请求,HikariCP就会继续新建connection直到达到maximun-pool-size。

maximum-pool-size

池中最大连接数(包括空闲和正在使用的连接)。默认值是10,这个一般预估应用的最大连接数,后期根据监测得到一个最大值的一个平均值。要知道,最大连接并不是越多越好,一个connection会占用系统的带宽和存储。但是 当连接池没有空闲连接并且已经到达最大值,新来的连接池请求(HikariPool#getConnection)会被阻塞直到connectionTimeout(毫秒),超时后便抛出SQLException。

minimum-idle

池中最小空闲连接数量。默认值10,小于池中最大连接数,一般根据系统大部分情况下的数据库连接情况取一个平均值。Hikari会尽可能、尽快地将空闲连接数维持在这个数量上。如果为了获得最佳性能和对峰值需求的响应能力,我们也不妨让他和最大连接数保持一致,使得HikariCP成为一个固定大小的数据库连接池。

pool-name

连接池的名字。一般会出现在日志和JMX控制台中。默认值:auto-genenrated。建议取一个合适的名字,便于监控。

auto-commit

是否自动提交池中返回的连接。默认值为true。一般是有必要自动提交上一个连接中的事物的。如果为false,那么就需要应用层手动提交事物。

idle-timeout

空闲时间。仅在minimum-idle小于maximum-poop-size的时候才会起作用。默认值10分钟。根据应用实际情况做调整,对于一些间歇性流量达到峰值的应用,一般需要考虑设置的比间歇时间更大,防止创建数据库连接拖慢了应用速度。

max-lifetime

连接池中连接的最大生命周期。当连接一致处于闲置状态时,数据库可能会主动断开连接。为了防止大量的同一时间处于空闲连接因为数据库方的闲置超时策略断开连接(可以理解为连接雪崩),一般将这个值设置的比数据库的“闲置超时时间”小几秒,以便这些连接断开后,HikariCP能迅速的创建新一轮的连接。

connection-timeout

连接超时时间。默认值为30s,可以接收的最小超时时间为250ms。但是连接池请求也可以自定义超时时间(com.zaxxer.hikari.pool.HikariPool#getConnection(long))。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HikariCP 是一款高性能的数据库连接池,它的默认配置已经非常优秀,但是在一些特定的场景下,可以进行一些适当的配置来进一步优化它的性能。以下是一些 HikariCP 合理的配置建议: 1. 最大连接数:maximumPoolSize 这个参数指定了连接池中最大的连接数,根据应用程序的负载情况,需要适当调整这个参数。如果连接数太少,会导致应用程序无法承受高并发的请求;如果连接数太多,会浪费系统资源。一般来说,最大连接数需要根据硬件配置和应用程序负载情况来确定,一般建议设置为数据库最大连接数的 70% 左右。 2. 连接超时时间:connectionTimeout 这个参数指定了连接的超时时间,当连接在规定时间内未能连接成功时,会抛出异常。这个时间需要根据网络延迟和数据库负载情况来设置,一般建议设置为 30s 左右。 3. 空闲连接的最大存活时间:idleTimeout 这个参数指定了连接池中空闲连接的最大存活时间,超过这个时间,将会被释放掉。这个时间需要根据数据库的负载情况来设置,一般建议设置为 10 分钟到 30 分钟之间。 4. 最大存活时间:maxLifetime 这个参数指定了连接的最大存活时间,超过这个时间,连接将会被释放掉。这个时间需要根据数据库的负载情况来设置,一般建议设置为 30 分钟到 1 小时之间。 5. 测试连接池中连接的可用性:connectionTestQuery 这个参数指定了测试连接池中连接的可用性的 SQL 查询语句。如果连接池中的连接长时间没有被使用,可能会因为连接已经被数据库关闭而失效。通过定期测试连接的可用性,可以避免这种情况的发生。建议设置为一个简单的查询语句,如 SELECT 1。 6. 自动提交事务:autoCommit 这个参数指定了是否自动提交事务,如果设置为 false,需要手动提交事务。这个参数需要根据应用程序的需求来设置,一般建议设置为 true。 综上所述,HikariCP 的合理配置需要结合实际的应用场景和硬件配置来确定。需要适当调整连接池中连接的数量、连接超时时间、空闲连接的最大存活时间、连接的最大存活时间、测试连接池中连接的可用性以及自动提交事务等参数,以达到最佳的性能和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值