【问题标题】:DBCP database pool initialSize not picked up. Pool not expanding with load未拾取 DBCP 数据库池的 initialSize。池不随负载扩展
【发布时间】:2017-03-14 22:41:43
【问题描述】:

我有一个使用 DBCP 数据库池连接到 SQL Server 的 java 应用程序。我们正在使用 jtds 驱动程序。

连接配置如下:

initialSize=20
maxActive=100
minIdle=20

所以在启动时,我希望在数据库中看到 20 个连接,但我只看到 16 个。测试显示 initialSize 的任何值高于 16 都会导致启动时有 16 个连接。如果我设置的值低于 16,则连接数正确,这表明该设置正在被拾取。

接下来,我将系统置于负载下,期望连接数增加。它似乎打算在数据库中保持 16 个连接,而不是连接数增加到其他更高的值。它在 16 到 ~30 之间上下波动,但当看到更高的值时,它会迅速上升到该计数,然后回落到 16。

我认为表明额外的 db 连接没有被添加回 dbcp 池。

检查 netstat 我可以看到当这种情况开始发生时,许多连接以 TIME_WAIT 结束,这表明我的 dbcp 池正在关闭 db 连接的套接字,这是不应该的。

我最初认为 16 是默认起点,当需要超过该数量的新连接时,它们将被添加到池中以增加整体大小,而不是这里的情况。

我们对此有一个严重的未决生产问题,因此我们将不胜感激任何想法或建议。

【问题讨论】:

    标签: java sql-server connection-pooling


    【解决方案1】:

    默认池大小为 8,我们有 2 个池,总共有 16 个连接,现在是有意义的。

    确定需要设置 maxIdle 才能获得正确的初始池大小。不知道为什么,但它现在可以工作了。

    【讨论】:

      猜你喜欢
      • 2012-04-20
      • 2019-03-03
      • 2013-09-04
      • 1970-01-01
      • 2019-09-25
      • 1970-01-01
      • 2010-10-04
      • 2013-06-03
      相关资源
      最近更新 更多