首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于mysql wait_time out值28800的Hikari maxLifetime应该是什么?

用于mysql wait_time out值28800的Hikari maxLifetime应该是什么?
EN

Stack Overflow用户
提问于 2022-10-17 13:20:28
回答 1查看 93关注 0票数 0

我有一个春季引导应用程序,在application.properties中启用了下面的application.properties属性,而在mysql中,wait_timeout = 28800

代码语言:javascript
运行
复制
spring.datasource.hikari.minimumIdle=9
spring.datasource.hikari.maximumPoolSize=10
spring.datasource.hikari.maxLifetime=28799990

我仍然得到以下错误

13:02:46.103 http-nio-8082-exec-2警告com.zaxxer.hikari.pool.PoolBase - HikariPool-1 -无法验证连接com.mysql.cj.jdbc.ConnectionImpl@13f6e098 (连接关闭后不允许操作)。可能考虑使用较短的maxLifetime值。

我需要在HikariCP中设置哪些值来解决这个问题

提前感谢

编辑

代码语言:javascript
运行
复制
  @Autowired
  JdbcTemplate jdbcTemplate;
  
  public Map<String, Object> getSlideData(String date, String sp){
      SimpleJdbcCall simpleJdbcCall = new SimpleJdbcCall(jdbcTemplate).withProcedureName(sp)
              .withoutProcedureColumnMetaDataAccess()
              .useInParameterNames(ReportGeneratorConstants.TIMEPERIOD)
              .declareParameters(
                      new SqlParameter(ReportGeneratorConstants.TIMEPERIOD,java.sql.Types.VARCHAR)
              );
      Map<String,String> map=new HashMap<>();
      map.put(ReportGeneratorConstants.TIMEPERIOD, date);
      
      return simpleJdbcCall.execute(map);
      
  }
}

我使用simpleJdbcCall调用存储过程,我知道simpleJdbcCall使用多线程运行存储过程,我想知道的是,一旦执行()完成( spring引导负责关闭连接),simpleJdbcCall是否会释放/关闭池中的所有连接?

EN

回答 1

Stack Overflow用户

发布于 2022-10-18 19:15:48

可以终止连接的原因有很多。通常,在中间有一个防火墙,在一定的时间之后会中断连接。找出那是什么时间,并将最大寿命设置为至少1分钟之前。Hikari有一个过期连接的后台线程,但我认为它每隔几秒钟就触发一次;我提到这一点,因为它不精确到毫秒。

请注意,Hikari将尝试保持连接的minimumIdle数,因此通常新连接将在后台打开,不会在应用程序中创建等待新连接的暂停。

编辑

我不太熟悉Azure,所以我不确定一定时间后网络堆栈是否会减少连接。就我个人而言,我从来没有设置空闲超时或最长寿命设置,只要你有,因为连接下降的机会是相当高的云环境(在我的经验)。例如,在AWS中,我们的数据团队建议使用最长5分钟,空闲时间为1分钟,这是在一个高流量的平台上使用的。

打开DB连接非常快,通常发生在幕后。我的建议是使用这些设置,但您必须验证它们对于应用程序的负载是否正常(基于您在下面的注释中添加的设置):

代码语言:javascript
运行
复制
# 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  
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74097987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档