我正在研究基于开源java的应用程序,即xwiki。 insie hibernate.cfg.xml我可以看到参数connection.pool_size和的值 statement_cache.siz为2(每个)。我的应用程序将在最多时间内拥有100个用户。现在我的问题应该是什么 这是理想的连接池大小。对我来说,2号看起来很少。如果100个用户一次连接98个用户必须等待grtting 连接发布了?在我的情况下,我应该将连接池大小保持为100吗?
我正在使用microsoft sql server。
除此之外,最大连接池大小也有限制。它依赖于webserver(在我的情况下是tomcat)还是数据存储供应商(ms sql server)?
答案 0 :(得分:8)
答案 1 :(得分:7)
如果典型请求花50%的时间进行计算,50%花费数据库连接,那么您的池中可能只需要50个连接。当然,您的应用程序应尽早释放数据库连接。
一般来说,保持连接对于数据库来说并不昂贵(而创建新的连接则相当昂贵)。保持足够大的尺寸应该没问题。
您可以设置
我对microsoft sql server不熟悉,但我认为它是max pool limit is 100
使用此池数量时,Tomcat可以正常使用。
答案 2 :(得分:2)
您应该评估应用程序的并发要求,数据库操作时间以及服务器(或数据库供应商)可以支持的连接数。
所以100个用户并不意味着您需要一个大小为100的连接池。
答案 3 :(得分:2)
请注意,如果未使用,池可能会耗费内存。 池配置在很大程度上取决于瓶颈所在:
CPU,内存,磁盘,网络,复杂的数据库查询,高并发性,......其中很多?
默认池大小通常为5到10。 首先确保您遇到数据库问题。 在人工负载下尝试极端情况,如2或30,看看它是如何表现的。 我认为@ vlad-mihalcea提供的链接非常有趣。