🗄️ Database

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;

Edit this page

Copyright © 2023-Present Ever Co. LTD.Docs by Sourcey