Database Connection Pooling: Why Your API Is Slow Under Load
Every database query needs a connection. Opening a new TCP connection + SSL handshake + auth for every request takes 20-50ms. Connection pooling keeps connections open and reuses them.
How Pooling Works
import { Pool } from "pg";
const pool = new Pool({
host: process.env.DB_HOST,
port: 5432,
database: process.env.DB_NAME,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
max: 20, // max connections in pool
idleTimeoutMillis: 30000, // close idle connections after 30s
connectionTimeoutMillis: 2000, // fail if cannot connect in 2s
});
pool.on("error", (err) => {
console.error("Unexpected idle client error", err);
});
Top comments (0)