对于Hikari连接池,maxLifetime参数表示一个连接使用的最大时间。当连接使用的时间超过maxLifetime时,连接将被Hikari关闭并重新创建。因此,我们可以将maxLifetime的设置值与wait_time out值进行比较,并确保maxLifetime不小于wait_time out值。
在Java代码中,我们可以这样设置Hikari的maxLifetime参数:
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost/test");
config.setUsername("username");
config.setPassword("password");
config.addDataSourceProperty("wait_timeout", "28800");
//设置maxLifetime
int waitTimeout = Integer.parseInt(config.getDataSourceProperties().getProperty("wait_timeout"));
int maxLifetime = Math.max(waitTimeout - 60, 300);
config.setMaxLifetime(maxLifetime);
HikariDataSource dataSource = new HikariDataSource(config);
在代码中,我们首先将wait_timeout值设置为28800,然后将其传递给Hikari连接配置中。接下来,我们将maxLifetime值设置为wait_timeout值减60秒,但最小不少于300秒。这样,当超过wait_timeout时,Hikari连接池将重新创建连接,以保持连接活动状态。
因此,当wait_time out值为28800时,我们建议将Hikari的maxLifetime设置为28740秒(即wait_timeout减去60秒),或者更长的时间,以确保连接的有效性。