【问题标题】:hikari pool is throwing timeout光池抛出超时
【发布时间】:2021-01-11 21:24:08
【问题描述】:

我使用的是spring boot 2.2.2.RELEASE,hikari版本3.4.1

hikari 中出现以下超时错误

超时失败统计(总数=30,活动=1,空闲=29,等待=163)

有29个空闲连接,仍然发生超时失败。

【问题讨论】:

    标签: spring-boot hikaricp


    【解决方案1】:

    你能试试下面的配置吗,我们的 QA 环境也有同样的问题,这个配置每秒可以处理 50-100 个请求,请保持空闲超时和最大生命周期不变

    private static DataSource pool;
    final HikariConfig config = new HikariConfig();
    config.setMinimumIdle(5);
    config.setMaximumPoolSize(50);
    config.setConnectionTimeout(10000);
    config.setJdbcUrl(JDBC_URL);
    config.setUsername(JDBC_USER);
    config.setPassword(JDBC_PASS);
    
    pool = new HikariDataSource(config); 
    

    【讨论】:

    • 好的,我会试试的。但是为什么应用程序无法从池中获取连接。虽然它显示空闲连接为 29
    • 另一个问题可能是连接泄漏,然后问题与 HikariCP 无关。有时问题仍然存在,因为一些复杂的方法通过 JPA 存储库在 DB 中执行多个更改。由于某些原因,对这些接口的调用导致越来越多的“冻结”活动连接,耗尽了池。将这些方法注释为 @Transactional 或将所有逻辑封装在对事务服务方法的单个调用中应该可以解决问题。
    • 但是活动连接没有被冻结。由于活动连接只有一个,意味着连接正在被释放。空闲连接(即 NOT_IN_USE 连接)显示总共 30 个连接中的 29 个。问题是随机出现的。 30 分钟应用程序无法连接,然后它自行更正
    • 也不是连接泄漏,因为连接被释放,它得到确认。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-09
    • 1970-01-01
    • 2016-09-16
    • 2011-04-11
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多