在我们的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版本中,很难估计在等待客户端上花费了多少事务时间。你得尝试一下。
连接池的大小应该足够小,即使所有连接都在使用,数据库也不会过载。不应该有比数据库机器的核数还多的活动连接。