[ PROMPT_NODE_23508 ]
conn-limits
[ SKILL_DOCUMENTATION ]
## 设置合理的连接限制
过多的连接会耗尽内存并降低性能。请根据可用资源设置限制。
**错误做法(无限制或连接过多):**
sql
-- 默认 max_connections = 100,但经常被盲目增加
show max_connections; -- 500 (对于 4GB 内存来说太高了)
-- 每个连接使用 1-3MB 内存
-- 500 个连接 * 2MB = 1GB 仅用于连接!
-- 负载下会出现内存不足错误
**正确做法(根据资源计算):**
sql
-- 公式: max_connections = (内存(MB) / 每个连接 5MB) - 保留值
-- 对于 4GB 内存: (4096 / 5) - 10 = ~800 理论最大值
-- 但实际上,100-200 对查询性能更好
-- 4GB 内存的推荐设置
alter system set max_connections = 100;
-- 同时合理设置 work_mem
-- work_mem * max_connections 不应超过内存的 25%
alter system set work_mem = '8MB'; -- 8MB * 100 = 800MB 最大值
监控连接使用情况:
sql
select count(*), state from pg_stat_activity group by state;
参考:[数据库连接](https://supabase.com/docs/guides/platform/performance#connection-management)