【发布时间】: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