Postgres recovery_prefetch can silently stall writes for hours

Postgres recovery_prefetch can cause outages

A field report shows how Postgres's recovery_prefetch setting can turn a routine burst of writes into a production outage. Because full-page writes are now ubiquitous and synchronous replication is common, prefetching converts large sequential reads into 8k random reads, amplifying IOPS up to 16x on replicas. When a network glitch interrupts streaming, the standby falls into WAL-restore mode and won't resume streaming until it catches up — leaving writes hung for over 30 minutes. Disabling recovery_prefetch fixes it.

The read IOPS amplification combined with Postgres design for synchronous replication is what turns recovery_prefetch into an actual outage-inducing killer.

More from this day

2026-10-22