Un incident sur le terrain a révélé que la fonctionnalité `recovery_prefetch` de PostgreSQL peut provoquer des pannes en production, notamment dans les configurations de réplication synchrone. Le problème provient d'appels de préfetch inutile lorsque les tampons partagés sont chargés depuis les écritures de page complète WAL (FPW) plutôt que depuis le disque, entraînant un décalage de rejeu important sur les serveurs de secours physiques. Les discussions historiques sur les listes de diffusion de 2021 et 2025 ont soulevé des inquiétudes mais manquaient d'un diagnostic complet.
Le problème central est l'amplification des IOPS : les gros E/S séquentiels sur le primaire sont convertis en lectures aléatoires de 8k sur les réplicas, épuisant les IOPS disponibles et provoquant un retard des réplicas. Ceci est aggravé par l'utilisation courante de la réplication synchrone pour la protection des données. La désactivation de `recovery_prefetch` résout le problème.
Cette fonctionnalité, conçue pour améliorer les performances de récupération, introduit au contraire une instabilité dans les environnements haute disponibilité modernes.
Source: Hacker News · Résumé par HeadlinesBriefing