OOM Canary
OOM Canary (OOM 카나리) 설정
이 설정들은 ClickHouse 서버의 메모리 부족(OOM) 상황에서 서버를 보호하기 위한 OOM 카나리 관련 설정이에요. ClickHouse 소스 코드에서 자동 생성된 참조 문서라서, 항상 최신 설정값을 정확하게 반영하고 있어요. 각 설정의 기본값과 동작 방식은 버전에 따라 달라질 수 있으니 변경 시 주의해서 적용해 주세요.
출처: 문서
본문
이 설정들은 ClickHouse 서버를 구성하며 ClickHouse 소스 코드에서 자동 생성됩니다.
oom_canary_enable
실험적 기능이에요. OOM 카나리를 활성화해요. OOM 카나리는 주 ClickHouse 서버 프로세스보다 먼저 Linux OOM 킬러의 대상이 되는 희생(child) 프로세스로, 서버가 부하를 덜어낼 기회를 줘요. Linux >= 5.3이 필요해요 (pidfd_open 때문이며, 오래된 커널에서는 시작 시 카나리가 비활성화돼요). OOM 응답은 cgroup v2의 memory.events.local OOM-kill 증거를 필요로 하며, 전역 쿼리 취소, merge 취소, system.crash_log 기록을 실행할 수 있어요. 서버의 cgroup에 대해 cgroup v2 memory.oom.group이 활성화된 경우 카나리는 서버를 보호할 수 없어요. 커널이 cgroup 전체를 하나의 단위로 죽이기 때문인데, 여기에는 서버도 포함되므로 OOM 응답은 절대 실행되지 않아요. 이 모드에서는 시작 시 경고가 기록돼요. 동작은 프로덕션 검증이 완료될 때까지 ClickHouse 버전 간에 변경될 수 있어요.
oom_canary_initial_backoff_seconds
연속적인 OOM 카나리 재시작 사이의 초기 백오프 지연(초)이에요. 재시작할 때마다 지연이 두 배로 증가하며 oom_canary_max_backoff_seconds까지 늘어나요.
oom_canary_max_backoff_seconds
연속적인 OOM 카나리 재시작 사이의 최대 백오프 지연(초)이에요.
oom_canary_max_rapid_relaunches
지속적인 메모리 압박 속에서 재시작이 과도하게 반복되는(thrashing) 것을 피하기 위해 자동 재시작이 비활성화되기 전까지 허용되는 연속적인 빠른 OOM 카나리 재시작의 최대 횟수예요. 카나리가 oom_canary_max_backoff_seconds보다 오래 생존하면 카운터와 재시작 백오프가 초기화되므로, 오랜 가동 시간 동안 드물게만 죽는 카나리는 결국 비활성화되지 않아요. oom_canary_relaunch가 true일 때만 적용돼요.
oom_canary_relaunch
true이면 카나리 프로세스가 영구적인 설정 실패나 서버 종료 이외의 어떤 이유로든 죽었을 때 — OOM 킬, 다른 시그널, 일시적 종료를 포함해서 — oom_canary_max_rapid_relaunches와 백오프 설정에 따라 OOM 카나리가 자동으로 재시작돼요. OOM 응답 시퀀스 자체는 cgroup v2 memory.events.local이 OOM-kill 증거를 제공할 때만 실행돼요.
oom_canary_size
OOM 카나리 자식 프로세스가 할당하고 접근하는 메모리 영역의 크기(바이트)예요. mlock으로 영역을 잠그는 것은 best-effort예요. CAP_IPC_LOCK 또는 충분한 RLIMIT_MEMLOCK이 필요하며, 잠금에 실패하면 카나리는 경고를 기록하고 메모리는 잠기지 않은 채로 남아요.