我在Spring服务器上使用HikariConfig作为postgres数据库的DataSource。 我应该设置maxPoolSize吗? (默认值为-1) 我可以使用多少池大小? 是否存在与硬件的依赖关系?
答案 0 :(得分:5)
maxPoolSize
是一个指标,作为您的申请的限制。您应该根据流量/应用程序的开销/硬件来计算。 F.E您可以将限制设置为10000个连接,这并不意味着它将按预期运行。实际上这会受到你的硬件的影响,因为如果你的机器包含一个核心,那么100000个活动连接只会拉伸java应用程序和postgres,因为操作系统将很难处理所有这些I / O调用。更糟糕的是,如果数据库和Java应用程序位于同一网络中的不同计算机上,则还会产生网络开销。
实际上优化性能的是minimumIdle
属性以及idleTimeout
,因此如果您为这些属性计算了适当的值,那么它也永远不会达到maxConnection
值由于锁等待或资源不足导致的开销。唯一不好的是,如果您的应用程序设计错误(持有的连接时间超过了需要,没有正确提交事务,不使用批处理作业进行长时间操作),那么它将影响用户的体验,但是这是另一个问题。
i)
我应该设置maxPoolSize吗? (默认值为-1)
您应该将其设置为全局限制,以便您的应用和数据库都可以维护和健康。默认值不是-1而是10.更多详细信息here
ii)
我可以使用多大的游泳池尺寸?
这取决于您的应用程序和您的基础架构。获得这些数字的唯一方法是通过对大多数拉伸用例的综合测试。
关于postgres调整的一些信息here
iii)
是否存在与硬件的依赖关系?
是的,对于JVM和Postgres服务器,不仅从硬件角度来看,还有你可能选择的操作系统