Suggested Default Thresholds
Every workload is different, but most Postgres and Supabase projects can benefit from these starting thresholds.
| Signal | Threshold | Duration | Why? |
|---|---|---|---|
| CPU Sustained | > 80% | 10m | Potential for query queuing and slowdowns. |
| Connections | > 85% | 5m | Approaching max_connections limit. |
| p95 Latency | > 50% increase | 5m | Significant regression in response times. |
| Lock Wait Spikes | > 5s | Instant | Heavy blocking that will likely lead to timeouts. |
| IO Latency | > 20ms | 10m | Disk is struggling to keep up with reads/writes. |
Tuning your Alerts
- Development: If you're building a new app, you may want lower thresholds to catch inefficient queries early.
- High Traffic: If you have sustained heavy load, tune your thresholds higher to avoid persistent "warning" states that aren't actually problems.
[!TIP] Use the Alert History in pgpulse to see how often an alert triggers and adjust the thresholds recursively until you reach a balance of high signal and low noise.