我正在使用版本2.3.7 for Java 6.我已将maximumPoolSize设置为200,connectionTimeout设置为30秒。在我们的一个负载测试案例中,我从SQLTimeoutException
遇到BaseHikariPool.getConnection
s,其中70个并发用户各自上传10个文件。我打开了调试日志记录并获得了pool stats。所以看起来游泳池并没有用尽。相反,HikariCP需要比connectionTimeout更长的时间来创建新连接。如何调试此过程的这一部分?基础数据源是SQLServerDataSource
版本4.1。
答案 0 :(得分:0)
connectionTimeout是等待从池获取连接的最长时间。 从数据源创建连接不是时候了。没有。
您可能需要考虑减少池大小。开始负载测试,最小化并逐渐增加,直到SqlServer开始花费更长时间来创建连接。 检查about pool size
HTH
答案 1 :(得分:0)
这可能是因为在HikariCP中打开连接是一个阻止呼叫( https://github.com/brettwooldridge/HikariCP/issues/1287)
您可能会发现此选项很有用com.zaxxer.hikari.blockUntilFilled
。使用此选项,连接池将在初始化期间并行打开minimumIdle
连接,而不是延迟初始化连接。