shi*_*han 13 java database sql-server connection-pooling hikaricp
根据HikariCP的文档,他们提到创建固定大小的池以获得更好的性能.
minimumIdle:
此属性控制HikariCP尝试在池中维护的最小空闲连接数.如果空闲连接低于此值,HikariCP将尽最大努力快速有效地添加其他连接.但是,为了获得最高性能和对峰值需求的响应,我们建议不要设置此值,而是允许HikariCP充当固定大小的连接池.默认值:相同
maximumPoolSize
我的应用程序通常需要100个连接,并且仅在少数情况下达到200个连接.
如果我创建一个200连接固定大小的池,大多数时候100个连接将是空闲的.
那么以下哪一项是最好的:
要么
minimumIdle为100和maximumPoolSize200 来创建连接池.为什么HikariCP不推荐第二点?我认为第二个对我来说是最好的.
bre*_*ttw 20
我建议你阅读本页并观看附带的视频.Oracle Performance Group演示了具有96连接池的应用程序如何轻松处理10,000个前端用户和每秒20,000个事务.
PostgreSQL建议使用以下公式:
connections = ((core_count * 2) + effective_spindle_count)
core_countCPU核心在哪里,effective_spindle_count是RAID中的磁盘数量.对于许多服务器,此公式将导致最大连接数为10-20的连接池.
可能性甚至是100个连接,您的数据库严重过饱.你有50个CPU核心吗?如果您的驱动器正在旋转盘片而不是SSD,那么头部一次只能在一个地方,除非整个数据集在内存中,否则无法一次为这么多请求服务(100-200).
更新:直接回答有关固定池大小调整的问题.您可能会从应用程序中获得最佳性能,其中最大连接数在您的数据库可以处理的"拐点"或"峰值"性能上变为正确.这可能是一个很小的数字.如果你有许多应用程序所做的"高峰需求",那么尝试启动新连接以在峰值瞬间增加池是适得其反的(在服务器上产生更多负载).一个小而恒定的池将为您提供可预测的性能.