Pular para o conteúdo principal

Connection Pooling

Configure and optimize database connection pools.

TypeORM Pool Configuration

DB_POOL_SIZE=40
DB_POOL_MAX=100
TypeOrmModule.forRoot({
type: "postgres",
extra: {
max: parseInt(process.env.DB_POOL_SIZE || "40"),
min: 5,
idleTimeoutMillis: 30000,
connectionTimeoutMillis: 5000,
},
});

Pool Sizing Guide

Deployment SizePool SizeMaxMin
Development5101
Small (< 20)20305
Medium (< 100)406010
Large (500+)8010020

Formula: pool_size = (cores * 2) + effective_spindle_count

PgBouncer (Connection Pooler)

For large deployments, use PgBouncer:

# pgbouncer.ini
[databases]
gauzy = host=db port=5432 dbname=gauzy

[pgbouncer]
pool_mode = transaction
default_pool_size = 50
max_client_conn = 500

Docker Compose

pgbouncer:
image: edoburu/pgbouncer
environment:
DATABASE_URL: postgres://postgres:password@db:5432/gauzy
POOL_MODE: transaction
DEFAULT_POOL_SIZE: 50
ports:
- "6432:6432"

Monitoring Connections

-- Active connections
SELECT count(*) FROM pg_stat_activity WHERE datname = 'gauzy';

-- Connection states
SELECT state, count(*)
FROM pg_stat_activity
WHERE datname = 'gauzy'
GROUP BY state;