【问题标题】:How to manage connection pooling to a database when using multiple compute instances?使用多个计算实例时如何管理与数据库的连接池?
【发布时间】:2021-03-02 12:14:02
【问题描述】:

我非常熟悉在该实例上设置 Express 服务器和运行连接池,通常只是一个连接到外部数据库 (AWS RDS) 的简单 VPS。实例上的连接池将接近数据库 (postgresql) 的最大连接限制。这是当前设置:

One VPS with a single database

最近,我的任务是让我们的 API 之一跨多个区域高度可用,这将包括至少 2 台连接到集中式数据库的服务器。我会减少 pg.Pool 最大连接数并将其分成两半吗?假设数据库上的最大连接数为 100,因为我将有两个实例,我应该将它们设置为 50 吗? (出于性能原因,最好少一些,但我希望你明白这一点)。

Multiple Servers, smaller connection pool in each

如果我将来有一个自动扩展组,这将如何扩展?只是通过实例数不断减少最大连接数? 还是我必须设置另一个 VPS 来单独处理连接池,然后在那个 VPS 上具有高可用性,这会增加更多成本?

Master Connection Pooler

感谢您的帮助!

【问题讨论】:

    标签: postgresql express connection-pooling pool pgbouncer


    【解决方案1】:

    首先,连接池的大小不应该设置为耗尽max_connections,而是应该限制数据库不会过载,即使所有连接都处于活动状态。

    如果您的应用程序有多个实例,您可能需要在这些服务器和数据库之间放置一个连接池,否则连接池将无效。

    如果可以的话,我推荐 pgBouncer,在事务池模式下。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 2021-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-13
      相关资源
      最近更新 更多