连接管理
高效利用连接资源
连接管理
每个计算附加组件都预配置了直接连接数和Supavisor连接池大小。本指南将介绍如何有效监控和管理这些资源。
配置Supavisor连接池大小
您可以通过数据库设置中的"连接池配置"部分来调整Supavisor管理的数据库连接数量:
通用规则是:如果您大量使用PostgREST数据库API,建议谨慎地将连接池大小提升超过40%。否则,可以将80%的连接分配给连接池。这样能为认证服务器和其他工具保留足够空间。
这些数值是通用建议,实际取决于您使用的其他Supabase产品及其使用程度。具体数值应根据您的并发峰值连接使用情况而定。例如,如果一周内您只使用了80个连接,而数据库最大连接数设置为500,那么实际上您可以分配420个连接的差值(减去合理缓冲)来满足更多需求。
连接监控
记录历史使用情况
Supabase提供了Grafana仪表板,可记录并可视化200多个项目指标,包括连接数。设置说明请参阅指标文档。
其中的"客户端连接"图表同时显示Supavisor和Postgres的连接情况:
监控实时连接
pg_stat_activity
是一个特殊的视图,用于追踪数据库运行的进程,包括实时连接。它特别适用于判断空闲客户端是否占用了连接槽位。
查询所有实时连接的SQL语句:
1234567891011121314SELECT pg_stat_activity.pid as connection_id, ssl, datname as database, usename as connected_role, application_name, client_addr as IP, query, query_start, state, backend_startFROM pg_stat_sslJOIN pg_stat_activityON pg_stat_ssl.pid = pg_stat_activity.pid;
查询结果字段说明:
列名 | 描述 |
---|---|
connection_id | 连接ID |
ssl | 是否使用SSL加密 |
database | 连接的数据库名称(通常是postgres ) |
usename | 连接用户的角色 |
application_name | 连接应用的名称 |
client_addr | 连接服务器的IP地址 |
query | 连接执行的最后一条查询 |
query_start | 最后一条查询的执行时间 |
state | 查询状态:active(活跃)或idle(空闲) |
backend_start | 连接建立的时间戳 |
通过用户名可以识别连接来源:
角色 | 对应的API/工具 |
---|---|
supabase_admin | Supabase监控系统和Realtime服务使用 |
authenticator | 数据API (PostgREST) |
supabase_auth_admin | 认证服务 |
supabase_storage_admin | 存储服务 |
supabase_replication_admin | 同步读取副本 |
postgres | Supabase仪表板及外部工具(如Prisma、SQLAlchemy、PSQL等) |
用户定义的自定义角色 | 外部工具(如Prisma、SQLAlchemy、PSQL等) |