#!/bin/bash # PostgreSQL Production Tuning for Horux360 # Server: 32GB RAM, 8 cores # Target: 50 tenants, PM2 cluster ×2 # # Run once: sudo bash scripts/tune-postgres.sh set -euo pipefail echo "=== PostgreSQL Production Tuning ===" sudo -u postgres psql -c "ALTER SYSTEM SET max_connections = 300;" sudo -u postgres psql -c "ALTER SYSTEM SET shared_buffers = '4GB';" sudo -u postgres psql -c "ALTER SYSTEM SET work_mem = '16MB';" sudo -u postgres psql -c "ALTER SYSTEM SET effective_cache_size = '16GB';" sudo -u postgres psql -c "ALTER SYSTEM SET maintenance_work_mem = '512MB';" sudo -u postgres psql -c "ALTER SYSTEM SET checkpoint_completion_target = 0.9;" sudo -u postgres psql -c "ALTER SYSTEM SET wal_buffers = '64MB';" sudo -u postgres psql -c "ALTER SYSTEM SET random_page_cost = 1.1;" echo "Settings applied. Restarting PostgreSQL..." sudo systemctl restart postgresql echo "Verifying settings..." sudo -u postgres psql -c "SHOW max_connections; SHOW shared_buffers; SHOW work_mem;" echo "=== Done ==="