连接管理
合理利用你的连接资源
连接#
每个 计算附加组件 都有预配置的直接连接数和 Supavisor 资源池大小。本指南讨论了观察和合理管理它们的方法。
配置 Supavisor 的资源池大小#
你可以通过更改“数据库设置”中的“连接池配置”部分来更改 Supavisor 可以管理的数据库连接数。数据库设置

通常的规则是,如果你大量使用 PostgREST 数据库 API,你应该注意将你的资源池大小提高到数据库最大连接数的 40% 以上。否则,你可以将 80% 分配给资源池。这样可以为身份验证服务器和其他实用程序留下足够的空间。
这些数字是概括性的,取决于你使用的其他 Supabase 产品以及它们的具体使用情况。实际值取决于你并发峰值连接的使用情况。例如,如果你在一个星期内只使用了 80 个连接,而你的数据库最大连接数设置为 500,那么实际上你可以分配 420 的差值(减去合理的缓冲)来服务更多需求。
监控连接#
捕获历史使用情况#
仪表盘监控图表#

对于团队和企业计划,Supabase 在仪表盘内直接提供高级遥测图表。数据库客户端连接图表显示按连接类型细分的历史连接数据
- Postgres:来自你的应用程序的直接连接
- PostgREST:来自 PostgREST API 层的连接
- Reserved:Supabase 服务管理连接
- Auth:来自 Supabase Auth 服务的连接
- Storage:来自 Supabase Storage 服务的连接
- Other roles:其他数据库连接
此图表可帮助你监控连接池使用情况、识别连接泄漏并规划容量。它还显示了你的计算规模的最大连接限制的参考线。
有关使用这些监控图表的更多详细信息,请参阅 报告指南。
Grafana 仪表盘#
Supabase 提供了一个 Grafana 仪表盘,可以记录和可视化 200 多个项目指标,包括连接。有关设置说明,请查看 指标文档。
它的“客户端连接”图表显示 Supavisor 和 Postgres 的连接 
观察实时连接#
pg_stat_activity 是一个特殊视图,它跟踪数据库正在运行的进程,包括实时连接。它对于确定空闲客户端是否占用连接插槽特别有用。
查询所有实时连接
1SELECT2 pg_stat_activity.pid as connection_id,3 ssl,4 datname as database,5 usename as connected_role,6 application_name,7 client_addr as IP,8 query,9 query_start,10 state,11 backend_start12FROM pg_stat_ssl13JOIN pg_stat_activity14ON 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 | 查询状态:活动或空闲 |
backend_start | 连接建立的时间戳 |
可以使用用户名来识别来源
| 角色 | API/工具 |
|---|---|
supabase_admin | Supabase 用于监控和实时数据 |
authenticator | 数据 API (PostgREST) |
supabase_auth_admin | 认证 |
supabase_storage_admin | 存储 |
supabase_replication_admin | 同步只读副本 |
postgres | Supabase 仪表盘和外部工具(例如,Prisma、SQLAlchemy、PSQL...) |
| 用户定义的自定义角色 | 外部工具(例如,Prisma、SQLAlchemy、PSQL...) |