如何解决Sequelize + postgres,如何计算连接池大小?
在我们的 nodejs 应用中,我们开始出现 SequelizeConnectionAcquireTimeoutError
错误。目前我们正在使用默认的 sequelize 连接设置:
{
max: 5,min: 0,acquire: 30000,idle: 10000
}
如何选择最大池的最佳值?
我在蚂蚁网站上搜索了很多类似的问题,但我找不到这个问题的具体答案。我将 sequelize 与 postgres 结合使用,这是我在 Pg wiki 上找到的唯一、最明智的信息: https://wiki.postgresql.org/wiki/Number_Of_Database_Connections
“如何找到最佳数据库连接池大小”段落在哪里,并回答(简而言之):
多年来在许多基准测试中一直保持良好的公式是,为了获得最佳吞吐量,活动连接的数量应该接近 ((core_count * 2) + Effective_spindle_count).
我在堆栈溢出上发现了非常相似的主题,它可以帮助提供我的问题的上下文 - 但没有答案。 Nodejs,Optimal parameters for sequelize connection pool?
解决方法
PostgreSQL Wiki 中的公式假设连接池中的会话从不空闲,因此限制可能太低。我建议了一个改进的公式 in my blog。
问题在于,使用 v14 之前的 PostgreSQL 版本,很难估计您的事务时间有多少用于等待客户端。您将不得不进行实验。
连接池的大小应该足够小,即使所有连接都在使用中,数据库也不会过载。数据库计算机中的活动连接数不应超过您的核心数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。