【发布时间】:2020-09-10 08:27:10
【问题描述】:
如 HikariCP docs 中所写,计算连接池大小的公式是 connections = ((core_count * 2) + effective_spindle_count)。但这是哪个核心数量:我的应用服务器还是数据库服务器?
例如:我的应用在 2 个 CPU 上运行,但数据库在 16 个 CPU 上运行。
【问题讨论】:
标签: postgresql connection-pooling hikaricp
如 HikariCP docs 中所写,计算连接池大小的公式是 connections = ((core_count * 2) + effective_spindle_count)。但这是哪个核心数量:我的应用服务器还是数据库服务器?
例如:我的应用在 2 个 CPU 上运行,但数据库在 16 个 CPU 上运行。
【问题讨论】:
标签: postgresql connection-pooling hikaricp
这是 Kevin 的连接池大小公式,其中核心和心轴(可以看出这是一个旧公式)是数据库服务器的。
这假设连接保持相当繁忙。如果您有较长空闲时间的事务,您可能需要使池更大。
最后,只有反复试验才能找到理想的池大小。
【讨论】:
引用来自PostgreSQL wiki,与数据库核心/服务器有关
数据库服务器只有这么多资源,如果您没有足够的活动连接来使用所有这些资源,您的吞吐量通常会通过使用更多连接来提高。
注意这个公式可能是outdated(@mustaccio 评论)
该 wiki 页面最近一次更新是在近 5 年前,而有问题的建议甚至更早。今天,I/O 队列深度可能比主轴数更重要,即使后者实际上存在
【讨论】: