tcp_keepalives_idle
| 버전 | 기본값 | context | 타입 |
|---|---|---|---|
| 14 | — | user | integer |
| 15 | — | user | integer |
| 16 | — | user | integer |
| 17 | — | user | integer |
| 18 | — | user | integer |
| 19 | — | user | integer |
네트워크 활동이 없는 상태가 이 시간만큼 이어지면 OS가 client에게 TCP keepalive 메시지를 보내도록 한다. 단위 없이 지정하면 초로 해석하며, 기본값 0은 OS 기본값을 그대로 사용한다는 뜻이다(Linux는 보통 7200초).
TCP_KEEPIDLE 또는 동등한 socket 옵션을 지원하는 시스템과 Windows에서만 동작한다. Windows는 시스템 기본값을 읽을 방법이 없어 0으로 설정하면 2시간으로 잡힌다. Unix-domain socket으로 접속한 세션에서는 무시되며 항상 0으로 표시된다.
운영 노트: 서버와 client 사이에 방화벽이나 load balancer가 있다면 해당 장비의 idle timeout보다 짧게 잡아야 유휴 connection이 소리 없이 끊기는 문제를 막을 수 있다. OS 기본값인 2시간은 대부분의 장비 timeout보다 길어서, 이런 환경에서는 명시적으로 낮춰 주는 편이 좋다.
출처: PostgreSQL 18 문서