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

Supabase边缘函数数据库连接闲置过多问题排查

Supabase边缘函数数据库连接泄漏问题

我在Supabase中使用边缘函数直接执行PostgreSQL数据库操作,每次调用边缘函数时的代码如下:

const pool = new postgres.Pool(databaseUrl, 2, true);

try {
  await connection.queryObject<UserImageModel>(
    `SELECT ...`
  );
} finally {
  connection.release();
}  

当约40位用户同时使用应用、频繁调用该边缘函数时,很快就遇到了remaining connection slots are reserved for non-replication superuser connections错误。我的Supabase微型项目支持60个直接数据库连接。

我原本以为边缘函数只会在调用connection.release()前短暂占用数据库连接,但执行以下查询检查开放连接时:

SELECT
  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_start
FROM pg_stat_ssl
JOIN pg_stat_activity
ON pg_stat_ssl.pid = pg_stat_activity.pid;

发现每次调用边缘函数后都会多两个处于idle状态的开放连接,即使边缘函数完全执行完毕也不会关闭。这些闲置连接迅速堆积,很快就达到了60个连接上限——我仅从一个实例调用几次函数,就出现了10个闲置连接。

显然我在关闭连接的操作上有误,是否存在明显的错误?是否需要释放整个连接池?


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 15:46:00