【问题标题】:Sequelize + postgres, how to calculate Connection Pool size?Sequelize + postgres,如何计算连接池大小?
【发布时间】:2021-02-06 01:48:01
【问题描述】:

在我们的 nodejs 应用程序中,我们开始出现 SequelizeConnectionAcquireTimeoutError 错误。目前我们正在使用默认的 sequelize 连接设置:

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

如何选择max pool的最佳值?

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

How to Find the Optimal Database Connection Pool Size”段落在哪里,并回答(简而言之):

多年来在许多基准测试中都表现良好的公式是,为了获得最佳吞吐量,活动连接的数量应该接近 ((core_count * 2) + Effective_spindle_count).

我发现了关于堆栈溢出的非常相似的主题,它可以帮助提供我的问题的上下文 - 但没有答案。 Nodejs, Optimal parameters for sequelize connection pool?

【问题讨论】:

  • 你掌握过这个吗?我自己也去过同一个兔子洞,哈。 :)

标签: node.js postgresql sequelize.js database-performance


【解决方案1】:

PostgreSQL Wiki 中的公式假定连接池中的会话永远不会空闲,因此限制可能太低。我提出了一个改进的公式in my blog

问题在于,对于 v14 之前的 PostgreSQL 版本,很难估计有多少事务时间用于等待客户端。您将不得不进行实验。

连接池的大小应该足够小,即使所有连接都在使用中,数据库也不会过载。活动连接的数量永远不会超过数据库机器中的核心数量。

【讨论】:

    猜你喜欢
    • 2018-02-18
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 2012-04-30
    • 2016-09-08
    • 1970-01-01
    • 2011-08-13
    • 2016-03-24
    相关资源
    最近更新 更多