是什么让HikariCP长期建立新的连接?

时间:2016-10-19 02:41:26

标签: sql-server java-6 connection-timeout hikaricp

我正在使用版本2.3.7 for Java 6.我已将maximumPoolSize设置为200,connectionTimeout设置为30秒。在我们的一个负载测试案例中,我从SQLTimeoutException遇到BaseHikariPool.getConnection s,其中70个并发用户各自上传10个文件。我打开了调试日志记录并获得了pool stats。所以看起来游泳池并没有用尽。相反,HikariCP需要比connectionTimeout更长的时间来创建新连接。如何调试此过程的这一部分?基础数据源是SQLServerDataSource版本4.1。

2 个答案:

答案 0 :(得分:0)

connectionTimeout是等待从池获取连接的最长时间。 从数据源创建连接不是时候了。没有。

您可能需要考虑减少池大小。开始负载测试,最小化并逐渐增加,直到SqlServer开始花费更长时间来创建连接。 检查about pool size

HTH

答案 1 :(得分:0)

这可能是因为在HikariCP中打开连接是一个阻止呼叫( https://github.com/brettwooldridge/HikariCP/issues/1287

您可能会发现此选项很有用com.zaxxer.hikari.blockUntilFilled。使用此选项,连接池将在初始化期间并行打开minimumIdle连接,而不是延迟初始化连接。