HikariConfig和maxPoolSize

Vad*_*dov 6 postgresql spring datasource connection-pooling hikaricp

我在Spring服务器上使用HikariConfig作为postgres数据库的DataSource.我应该设置maxPoolSize吗?(默认值为-1)我可以使用多少池大小?是否存在与硬件的依赖关系?

Ant*_*Dev 7

maxPoolSize是一个指标作为您的申请的限制.您应该根据流量/应用程序的开销/硬件来计算.FE您可以将限制设置为10000个连接,这并不意味着它将按预期运行.实际上这会受到你的硬件的影响,因为如果你的机器包含一个核心,那么100000个活动连接只会拉伸java应用程序和postgres,因为操作系统将很难处理所有这些I/O调用.更糟糕的是,如果数据库和Java应用程序位于同一网络中的不同计算机上,则还会产生网络开销.

实际上优化性能的是minimumIdle属性以及属性idleTimeout,因此如果您为这些属性计算了适当的值,那么它应该永远不会达到该maxConnection值,并且由于锁等待或资源不足而导致开销.这里唯一不好的是,如果您的应用程序设计错误(持有的连接时间超过了需要,没有正确提交事务,不使用批处理作业进行长时间操作),那么它将影响用户的体验,但这是另一个问题.

一世)

我应该设置maxPoolSize吗?(默认值为-1)


您应该将其设置为全局限制,以便您的应用程序和数据库都可以维护和健康.默认值不是-1但是10. 此处有更多详细信息

II)

我可以使用多少泳池大小?


这取决于您的应用程序和您的基础架构.获得这些数字的唯一方法是通过对大多数拉伸用例的综合测试.有些信息在这里关于Postgres的调整

三)

是否存在与硬件的依赖关系?


是的,对于JVM和Postgres服务器,不仅从硬件角度来看,还有你可能选择的操作系统