考虑数据库连接池大小的决策

我正在研究基于开源java的应用程序,即xwiki。在休眠状态中.cfg.xml我可以看到参数connection.pool_size的值,statement_cache.size为2(每个)。我的应用程序在某个时间点的最大负载为 100 个用户。现在我的问题是,对于这个来说,理想的连接池大小应该是多少。对我来说,2号看起来非常小。如果一次连接 100 个用户,则有 98 个用户必须等待解除连接?在我的情况下,我应该将连接池大小保持为100吗?

我正在使用微软sql服务器。

除此之外,最大连接池大小也有限制。它依赖于web服务器(在我的情况下是tomcat)还是数据存储供应商(ms sql server)?


答案 1

调整连接池的大小并不是一件小事。您基本上需要:

  • 用于调查连接使用情况的指标
  • 没有可用连接时的故障转移机制

FlexyPool旨在帮助您确定正确的连接池大小。


答案 2

如果典型请求花费 50% 的时间进行计算,将 50% 的时间用于数据库连接,则池中可能只需要 50 个连接。当然,您的应用程序应尽早释放 db 连接。

通常,对于数据库来说,保持连接并不昂贵(而创建新连接的成本相当高)。保持足够高的尺寸应该没有问题。

您可以设置

  • 最大池大小为 100
  • 首选池大小为 50
  • 以及池连接的空闲超时到 5 分钟。

我不熟悉microsoft sql server,但我认为它的最大池限制是100

雄猫将很好地处理这个数字的池大小。


推荐