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
我们在当前的 Hasura 2.0.9
(GCP)
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