Hasura Cloud 运行 和 Cloud SQL 池 settings/database 错误

Hasura Cloud Run and Cloud SQL pool settings/database errors

我们在当前的 Hasura 2.0.9 (GCP)

设置中使用 Cloud 运行 和 Cloud SQL

Cloud 运行 设置为 运行 最少 5 个实例,最多 150 个实例,大约 ~80-90 个实例平均 运行ning。

云 SQL 设置为接受最多 500 个连接(4 个 vCPU 和 15GB RAM)

云上每秒的平均请求数 运行 约为 350

我在云上遇到错误 SQL:

db=postgres,user=postgres FATAL: remaining connection slots are reserved for non-replication superuser connections

和:

db=postgres,user=postgres FATAL: sorry, too many clients already

云上出现 500/503 错误 运行:

severity: "ERROR". <--- 500
textPayload: "The request failed because the instance could not start successfully."
severity: "ERROR" <--- 503
textPayload: "The request failed because either the HTTP response was malformed or connection to the instance had an error."

这是databases.yaml

- name: default
  kind: postgres
  configuration:
    connection_info:
      database_url:
        from_env: HASURA_GRAPHQL_DATABASE_URL
      isolation_level: read-committed
      pool_settings:
        connection_lifetime: 600
        idle_timeout: 180
        max_connections: 400
        retries: 1
      use_prepared_statements: true
  tables: "!include default/tables/tables.yaml"
  functions: "!include default/functions/functions.yaml"

上面的 yaml 可以使用还是我应该将 max_connections 限制为 150 个实例/500(数据库连接限制)= ~2 max_connections?现在在数据库监控中,我看到连接超出了池的 400 max_connections 设置,并达到了 Cloud SQL.[=28 的 500 连接限制=]

我找不到最佳位置,所以基础架构不会失败。我什至尝试使用 pgpool(我已经从 databases.yaml 中删除了 pool_settings),但它不会变得更好。最近几天我一直在尝试组合,但没有成功。

非常感谢任何帮助。

如果您 运行 进入云 运行 -> 云 SQL 连接限制,根据 this 配额页面,连接限制为 100。

一个很好的升级是 交换基于连接器的数据库连接,使用基于 VPC 网络的方法。

@guilaume 整理了一份关于 VPC 连接器与云的详尽指南 运行。

Cloud SQL with private IP only: the Good, the Bad and the Ugly