Postgres의 recovery_prefetch, 실제 장애를 일으키다
Postgres recovery_prefetch can cause outages
Postgres의 recovery_prefetch 설정이 예상치 못한 장애를 유발할 수 있다는 현장 사례가 공개됐다. 이 설정은 대규모 순차 I/O를 8k 랜덤 읽기로 바꿔 복제본의 IOPS를 최대 16배 증폭시키고, 동기 복제 환경에서 네트워크 문제와 겹치면 쓰기가 수십 분간 멈추는 원인이 된다. 작성자는 작은 서버에서 재현 방법까지 공개하며, FPW가 기본 활성화된 현재 recovery_prefetch의 이점이 불분명하다고 지적한다.
동기 복제 환경에서 이 연결은 결정적이다. 프라이머리는 이 연결 없이는 쓰기를 받아들일 수 없다. 또한 매우 취약해서, 연결이 끊기면 프라이머리는 모든 쓰기를 막은 채 스탠바이가 곧 다시 연결되기를 바라며 기다릴 수밖에 없다.