Vercel Fluid Compute로 전환하고 일주일 운영 중인데 인스턴스가 점진적으로 OOM 됩니다. 디버그해보니 pg Pool의 connection count가 시간에 따라 증가만 합니다.
// db.ts
import { Pool } from 'pg'
const pool = new Pool({
connectionString: process.env.DATABASE_URL,
max: 20,
})
export { pool }
// api/route.ts
import { pool } from '@/lib/db'
export async function GET() {
const client = await pool.connect()
try {
const r = await client.query('SELECT ...')
return Response.json(r.rows)
} finally {
client.release() // 여기서 release하는데...
}
}
매 요청 release 하는데도 idle connection이 1시간에 약 30개씩 누적. Postgres max_connections 한도 도달. Fluid Compute 환경에서 pg Pool 사용 패턴 잘못된 게 있을까요?
환경: Vercel Pro, Fluid Compute ON, Next 17, pg 8.13, Neon Postgres
댓글 0