我正在使用 hikariCP,我可以在 housekeeping 中看到最大连接数为 10,但计算不匹配,如下所示,在 pool-2 中,我可以看到总共 10 个连接,但正在等待 24 个,这是一个问题吗?
|DEBUG|Hikari Housekeeping Timer (pool HikariPool-0)|||com.zaxxer.hikari.pool.HikariPool|Before cleanup pool stats HikariPool-0 (total=10, inUse=0, avail=10, waiting=0)
|DEBUG|Hikari Housekeeping Timer (pool HikariPool-0)|||com.zaxxer.hikari.pool.HikariPool|After cleanup pool stats HikariPool-0 (total=10, inUse=0, avail=10, waiting=0)
|DEBUG|Hikari Housekeeping Timer (pool HikariPool-1)|||com.zaxxer.hikari.pool.HikariPool|Before cleanup pool stats HikariPool-1 (total=10, inUse=0, avail=10, waiting=0)
|DEBUG|Hikari Housekeeping Timer (pool HikariPool-1)|||com.zaxxer.hikari.pool.HikariPool|After cleanup pool stats HikariPool-1 (total=10, inUse=0, avail=10, waiting=0)
|DEBUG|Hikari Housekeeping Timer (pool HikariPool-2)|||com.zaxxer.hikari.pool.HikariPool|Before cleanup pool stats HikariPool-2 (total=10, inUse=10, avail=0, waiting=24)
|DEBUG|Hikari Housekeeping Timer (pool HikariPool-2)|||com.zaxxer.hikari.pool.HikariPool|After cleanup pool stats HikariPool-2 (total=10, inUse=10, avail=0, waiting=24)
|DEBUG|HikariCP connection filler (pool HikariPool-2)|||com.zaxxer.hikari.pool.HikariPool|After fill pool stats HikariPool-2 (total=10, inUse=10, avail=0, waiting=24)
|DEBUG|Hikari Housekeeping Timer (pool HikariPool-3)|||com.zaxxer.hikari.pool.HikariPool|Before cleanup pool stats HikariPool-3 (total=10, inUse=0, avail=10, waiting=0)
|DEBUG|Hikari Housekeeping Timer (pool HikariPool-3)|||com.zaxxer.hikari.pool.HikariPool|After cleanup pool stats HikariPool-3 (total=10, inUse=0, avail=10, waiting=0)
|DEBUG|Hikari Housekeeping Timer (pool HikariPool-4)|||com.zaxxer.hikari.pool.HikariPool|Before cleanup pool stats HikariPool-4 (total=10, inUse=0, avail=10, waiting=0)
|DEBUG|Hikari Housekeeping Timer (pool HikariPool-4)|||com.zaxxer.hikari.pool.HikariPool|After cleanup pool stats HikariPool-4 (total=10, inUse=0, avail=10, waiting=0)
|DEBUG|HikariCP connection closer (pool HikariPool-4)|||com.zaxxer.hikari.pool.PoolUtilities|Closing connection com.sybase.jdbc4.jdbc.SybConnection@5129f018
|DEBUG|Hikari Housekeeping Timer (pool HikariPool-5)|||com.zaxxer.hikari.pool.HikariPool|Before cleanup pool stats HikariPool-5 (total=10, inUse=0, avail=10, waiting=0)
|DEBUG|Hikari Housekeeping Timer (pool HikariPool-5)|||com.zaxxer.hikari.pool.HikariPool|After cleanup pool stats HikariPool-5 (total=10, inUse=0, avail=10, waiting=0)
最佳答案
看来一切都好。您看到的只是 24 个连接请求在等待空闲连接。
HikariCP(主要)取决于 minimumIdle
和 maximumPoolSize
[设置] ( https://github.com/brettwooldridge/HikariCP#configuration-knobs-baby )。 minimumIdle
默认为 maximumPoolSize
的任意值。 maximumPoolSize
默认为 10。
我猜测您的池正在使用默认配置,这可以解释这 24 个等待请求。如果您的系统需要更多可用连接,请尝试增加 maximumPoolSize
的值并将 minimumIdle
设置为 10。
当池启动时,它将建立 10 个连接(空闲),并将它们提供给请求它们的人。然后,当所有连接都在使用时,它将生成更多连接,最多可达 maximumPoolSize
连接。一段时间后,当它们不再使用时,这些连接将被销毁,仅保留 minimumIdle
中的前 10 个连接。
每当您调整池的设置时,请考虑数据库的配置、限制以及第三方访问它的影响。
关于java - HikariCP 中的计算不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31137218/