【问题标题】:Calculation mismatch in HikariCPHikariCP中的计算不匹配
【发布时间】:2015-06-30 20:03:31
【问题描述】:

我正在使用 hikariCP,我可以在客房服务中看到最大连接数为 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) 

【问题讨论】:

  • 你找到解决方案了吗?@Amey Jadiye

标签: java connection-pooling hikaricp


【解决方案1】:

看来一切正常。您看到的只是 24 个连接请求等待空闲连接。

HikariCP(主要)依赖于minimumIdlemaximumPoolSize [设置] (https://github.com/brettwooldridge/HikariCP#configuration-knobs-baby)。 minimumIdle 默认为 maximumPoolSize 的任何值。 maximumPoolSize 默认为 10。

我猜您的池正在使用默认配置,这可以解释这 24 个等待请求。如果您的系统需要更多可用连接,请尝试增加maximumPoolSize 的值并将minimumIdle 设置为10。

当池启动时,它将建立 10 个连接(空闲)并将它们提供给任何请求它们的人。然后,当所有连接都在使用中时,它会产生更多的 maximumPoolSize 连接。一段时间后,当它们不再使用时,这些连接将被销毁,仅保留来自 minimumIdle 的前 10 个。

当您调整池的设置时,请考虑您的数据库的配置、限制以及第三方访问它的影响。

【讨论】:

  • 在提升您的maximumPoolSizemake sure you need to 之前。一般而言,如果maximumPoolSize 调整为接近数据库的峰值 TPS,则您需要挂起(等待)线程。我猜 10 可能非常接近这个数字。将池增加到 30-40 个连接然后显示“waiting=0”和“in use=34”,但就实际执行这些查询而言,您实际上可能会变得更慢,而不是更快.
猜你喜欢
  • 1970-01-01
  • 2014-08-10
  • 2022-01-18
  • 1970-01-01
  • 2021-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-25
相关资源
最近更新 更多