Skip to main content
The agent is only half the equation. Your PostgreSQL instance needs to keep up with the write volume. Here’s what we recommend based on your traffic.

Small traffic — up to 50K requests/day

Medium traffic — 50K to 500K requests/day

High traffic — 500K to 5M requests/day

These are conservative estimates. Actual storage depends on your payload sizes, how many monitoring modules you enable, and your data clearing schedule.

idle_in_transaction_session_timeout

A dropped connection through a pooler (Supabase Supavisor, PgBouncer, RDS Proxy) can leave an orphaned transaction on the server holding locks on the nightowl_* tables. When that happens, the agent logs SQLSTATE[55P03] lock timeout errors on every drain attempt and telemetry backs up in the local buffer until the orphaned session is killed. Let PostgreSQL clean these up on its own:
This setting applies to every client of that database, not just the agent. If your application shares the database and legitimately holds transactions idle for longer than 30 seconds, scope it to the agent’s role instead:
Agent versions newer than 1.2.14 apply this guard automatically on their own drain transactions (NIGHTOWL_DB_IDLE_TXN_TIMEOUT_MS, default 30 seconds), scoped so other clients of your database are never affected. The database-level setting remains useful as a backstop and for older agents.