MySQL的Hikari max Lifetime WAIT_TIMEOUT值28800应该是多少

x9ybnkn6  于 2022-10-23  发布在  Mysql
关注(0)|答案(1)|浏览(289)

我有一个SpringBoot应用程序,在Application.Properties中启用了以下HikariCP属性,在MySQL中我有WAIT_TIMEOUT=28800

spring.datasource.hikari.minimumIdle=9
spring.datasource.hikari.maximumPoolSize=10
spring.datasource.hikari.maxLifetime=28799990

我仍然收到以下错误
13:02:46.103[http-nio-8082-exec-2]warn com.zaxxer.hikari.pool.PoolBase-HikariPool-1-无法验证连接com.mysql.cj.jdbc.ConnectionImpl@13f6e098(连接关闭后不允许执行任何操作。)可以考虑使用较短的max Lifetime值。
我需要在HikariCP中设置哪些值才能解决此问题
提前谢谢你

owfi6suc

owfi6suc1#

可以终止连接的原因有很多。通常,中间会有一些东西,通常是防火墙,它会在设定的时间后丢弃连接。找出这是什么时间,并将最长寿命设置为至少在此之前1分钟。Hikari有一个使连接过期的后台线程,但我认为它每隔几秒钟就会触发一次;我提到这一点是因为它不精确到毫秒。
请注意,Hikari将尝试保持最小空闲连接数,因此通常新连接将在后台打开,不会在应用程序中造成暂停以等待新连接。

编辑

我不熟悉Azure,所以我不确定网络堆栈在一段时间后是否会断开连接。就我个人而言,我从不设置空闲超时或最大寿命设置,只要您拥有的设置在云环境中连接断开的可能性相当高(根据我的经验)。例如,在AWS中,我们的数据团队建议使用最大生存期为5分钟,空闲超时为1分钟,这是在流量较高的平台上使用的。
打开数据库连接相当快,通常在幕后进行。我的建议是使用这些设置,但您必须验证它们是否适用于应用程序的加载(基于您在下面的注解中添加的设置):


# set this equal to maximum pool size if the traffic has burst

spring.datasource.hikari.minimumIdle=5
spring.datasource.hikari.maximumPoolSize=30

# It's the same as the default = 30 minutes

spring.datasource.hikari.maxLifetime=1800000   

# It's the same as the default = 10 minutes

spring.datasource.hikari.keepalive-time=60000

相关问题