現場のインシデントにより、PostgreSQL の `recovery_prefetch` 機能が本番環境で障害を引き起こすことが明らかになりました。特に同期レプリケーション構成で問題となります。問題の原因は、共有バッファがディスクではなく WAL フルページ書き込み (FPW) からロードされる場合に発生する不要なプリフェッチ呼び出しであり、物理スタンバイでの大幅なリプレイラグを引き起こします。2021 年と 2025 年の過去のメーリングリストでの議論で懸念が提起されましたが、完全な診断は行われていません。根本的な問題は IOPS の増幅です。プライマリでの大きなシーケンシャル I/O がレプリカでの 8k ランダム読み取りに変換され、利用可能な IOPS を使い果たし、レプリカの遅延を引き起こします。データ保護のために同期レプリケーションが一般的に使用されていることがこの問題を悪化させます。`recovery_prefetch` を無効にすると問題が解決します。復旧パフォーマンスを向上させるために設計されたこの機能は、代わりに最新の高可用性環境で不安定性を引き起こします。
出典: Hacker News · 要約:HeadlinesBriefing