You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何限制Hasura在Docker Compose环境中打开的数据库连接数?

问题描述

我在Docker Compose搭建的E2E测试环境中运行Hasura,服务配置如下:

hasura:
  restart: always
  build:
    context: .
    dockerfile: hasura.Dockerfile
  ports:
    - "8080:8080"
  depends_on:
    - postgres
    - postgres-second
  environment:
    HASURA_GRAPHQL_DATABASE_URL: postgresql://username:password@postgres:5432/client__dev?application_name=hasura
    HASURA_GRAPHQL_ENABLE_CONSOLE: "true"
    HASURA_GRAPHQL_DEV_MODE: "true"
  # wait for postgres to be online
  # `graphql-engine serve` was discovered by running `docker inspect hasura/graphql-engine:v2.6.0`
  command: /bin/sh -c "./wait-for-it.sh postgres:5432 && ./wait-for-it.sh postgres-second:5432 && graphql-engine serve"

我发现它会打开大量Postgres数据库连接,执行以下查询:

select application_name, count(*) from pg_stat_activity
group by application_name
order by 2 desc

得到结果:

+---------------------+-----+
|application_name     |count|
+---------------------+-----+
|hasura-enterprise    |35   |
|hasura               |35   |
|graph-node-enterprise|13   |
|graph-node           |13   |
|                     |5    |
|IntelliJ IDEA 2023.2 |1    |
|api-server-prisma    |1    |
|postgres_fdw         |1    |
|api-database-url     |1    |
+---------------------+-----+

背景:我正在执行的测试用例使用Hasura的webhook交付功能处理高吞吐量表。请问是否可以限制Hasura为HASURA_GRAPHQL_DATABASE_URL定义的数据库打开的连接数?

解决方案

可以通过Hasura的环境变量限制数据库连接数,具体配置方式如下:

  • 限制主数据库连接池大小:添加HASURA_GRAPHQL_DATABASE_CONNECTION_POOL_SIZE环境变量,设置允许的最大连接数。比如要把连接池限制为15,在Docker Compose的environment块中新增:
    HASURA_GRAPHQL_DATABASE_CONNECTION_POOL_SIZE: "15"
    
  • 多数据库场景适配:如果是通过环境变量配置的其他数据库(比如你的postgres-second),可以用HASURA_GRAPHQL_DATABASE_<NAME>_CONNECTION_POOL_SIZE格式的变量,其中<NAME>为数据库别名(需大写,特殊字符替换为下划线);如果是控制台添加的数据库,可在数据库配置界面直接指定连接池大小。

注意事项:

  • 连接池大小不能超过Postgres的max_connections参数(默认通常为100),避免耗尽数据库连接资源。
  • 高吞吐量场景下,连接池过小可能导致请求排队,需要结合实际测试调整数值,平衡资源占用与请求响应速度。

内容的提问来源于stack exchange,提问作者Paymahn Moghadasian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 19:45:17