idle_replication_slot_timeout
| 버전 | 기본값 | context | 타입 |
|---|---|---|---|
| 18 | — | sighup | integer |
| 19 | — | sighup | integer |
replication 연결이 이 시간보다 오래 사용하지 않은 replication slot을 invalidate한다. 단위 없이 값을 주면 초로 해석하며, 기본값 0은 이 메커니즘을 끈다. postgresql.conf나 서버 커맨드라인에서만 설정할 수 있고, slot이 존재하는 서버(보통 primary)에 적용된다. PostgreSQL 18에서 추가됐다.
invalidation은 checkpoint 시점에 수행된다. checkpoint는 checkpoint_timeout 간격으로 일어나므로, timeout을 넘긴 시점과 실제 invalidation 사이에는 지연이 있을 수 있다. 즉시 정리가 필요하면 checkpoint를 수동으로 실행해 invalidation을 앞당길 수 있다. 유휴 시간은 pg_replication_slots의 inactive_since 값으로 계산한다.
WAL을 예약하지 않는 slot과, primary에서 동기화되어 온 standby의 synced slot(pg_replication_slots.synced가 true)에는 적용되지 않는다. synced slot은 스스로 logical decoding을 수행하지 않아 항상 inactive로 간주되기 때문이다.
운영 노트: 사용이 중단된 slot이 WAL을 무한정 붙잡아 pg_wal이 차오르는 사고를 시간 기준으로 막는 안전장치다. 크기 기준인
max_slot_wal_keep_size와 함께 두면 시간과 용량 양쪽으로 방어할 수 있다.출처: PostgreSQL 18 문서