【问题标题】:how database connection pool works when multiple instances of same micro service同一微服务的多个实例时数据库连接池如何工作
【发布时间】:2019-11-07 05:12:30
【问题描述】:

我有一个带有 hickaricp+PostgreSQL 的微服务,它在最大连接数 20 的情况下工作正常。 我们计划用 4 个相同的微服务实例对 500 个并发请求进行负载测试。 我的问题是如何在 4 个实例之间共享连接池连接以及我应该在 hickaricp 中保留多少个最大连接? 为了维持这种负载,必须在数据库端进行哪些更改?

【问题讨论】:

  • 据我了解,每个微服务实例都有自己的连接池,在这种情况下,您可能希望根据输入负载扩大池大小。
  • 连接池不跨容器实例共享

标签: database microservices connection-pooling kubernetes-pod


【解决方案1】:

如果您希望在所有微服务实例之间拥有一个共享的公共连接池来定义与数据库的最大并发连接数,您必须使用像 pgbouncer 这样的外部连接池并让所有微服务向 pgbouncer 发出请求。通过这种方式 pgbouncer 管理连接并共享所有连接

【讨论】:

    【解决方案2】:

    最大连接池是每个服务实例。在这种情况下,您有 50 个和 4 个实例,因此您可以成功执行的并发事务总数为 50*4。如果您有更多交易,那么剩余交易将等待,在这种情况下,这些额外交易可能会超时。

    【讨论】:

      猜你喜欢
      • 2019-02-16
      • 2019-08-29
      • 2010-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-10
      • 2020-07-07
      相关资源
      最近更新 更多