- POSTGRESQL_TUNING.md: documents applied config (8GB shared_buffers, 64MB work_mem, 8GB max_wal_size, SSD params) - SYSTEMD_SERVICES.md: lists all production systemd services - systemd/: versioned copies of all .service and .timer files - .gitignore: ignore package-lock.json and backups/
41 lines
1.4 KiB
Markdown
41 lines
1.4 KiB
Markdown
# PostgreSQL Tuning — Nexus Autoparts
|
|
|
|
**Server:** 48 GB RAM, 8 cores, SSD (QEMU)
|
|
**Applied:** 2026-04-26
|
|
**Requires restart:** Yes (done)
|
|
|
|
## Configuration Changes
|
|
|
|
File: `/etc/postgresql/17/main/postgresql.conf`
|
|
|
|
| Parameter | Before | After | Rationale |
|
|
|-----------|--------|-------|-----------|
|
|
| `shared_buffers` | 128 MB | **8 GB** | ~25% of RAM for PostgreSQL buffer cache |
|
|
| `work_mem` | 4 MB | **64 MB** | Larger sorts/joins without disk spilling |
|
|
| `maintenance_work_mem` | 64 MB | **1 GB** | Faster VACUUM, CREATE INDEX, ALTER |
|
|
| `effective_cache_size` | 4 GB | **36 GB** | Planner knows OS cache is large |
|
|
| `max_wal_size` | 1 GB | **8 GB** | Fewer checkpoints under heavy write load |
|
|
| `checkpoint_completion_target` | 0.5 | **0.9** | Spread checkpoint I/O over more time |
|
|
| `wal_buffers` | - | **16 MB** | WAL buffer sizing |
|
|
| `random_page_cost` | 4.0 | **1.1** | SSD-appropriate random read cost |
|
|
| `effective_io_concurrency` | 1 | **200** | SSD can handle many concurrent requests |
|
|
| `max_connections` | 100 | **200** | Headroom for Celery, Quart, Dashboard, PgBouncer |
|
|
|
|
## Verification
|
|
|
|
```bash
|
|
sudo -u postgres psql -d nexus_autoparts -c "SHOW shared_buffers;"
|
|
```
|
|
|
|
## Backup
|
|
|
|
A backup of the previous config is stored at:
|
|
`/etc/postgresql/17/main/postgresql.conf.backup.<timestamp>`
|
|
|
|
## pg_hba Adjustment for Monitoring
|
|
|
|
Added Docker network access for postgres-exporter:
|
|
```
|
|
host nexus_autoparts postgres 172.17.0.0/16 trust
|
|
```
|