Sequelize + postgres,如何计算连接池大小?



在我们的nodejs应用程序中,我们开始有SequelizeConnectionAcquireTimeoutError错误。目前我们使用默认的序列化连接设置:

{
max: 5,
min: 0,
acquire: 30000,
idle: 10000
}

如何选择max pool的最佳值?

我在网站上搜索了很多类似的问题,但我找不到这个问题的具体答案。我使用sequelize连接到postgres,我在Pg wiki上找到的唯一,最明智的信息:https://wiki.postgresql.org/wiki/Number_Of_Database_Connections

如何找到最优的数据库连接池大小",并回答(简短):

一个多年来在很多基准测试中都很有效的公式是,为了获得最佳吞吐量,活动连接的数量应该接近((core_count * 2) + effecve_spindle_count).

我发现非常类似的主题堆栈溢出,可以帮助提供我的问题的背景-但没有答案。Nodejs,最优参数序列化连接池?

来自PostgreSQL Wiki的公式假设连接池中的会话永远不会空闲,因此限制可能过低。我在我的博客中提出了一个改进的公式。

问题是,在v14之前的PostgreSQL版本中,很难估计在等待客户端上花费了多少事务时间。你得尝试一下。

连接池的大小应该足够小,即使所有连接都在使用,数据库也不会过载。不应该有比数据库机器的核数还多的活动连接。

最新更新