AI 요약
PostgreSQL은 OOM(Out of Memory) 킬러에 취약한 구조로, 백엔드 프로세스가 강제 종료되면 공유 메모리가 손상될 위험이 있습니다. 이에 Ubicloud는 15년간 엄격한 메모리 오버커밋(strict overcommit) 설정을 유지하며 OOM 킬러 발생 자체를 차단하고 있습니다. 또한 3글자짜리 커널 버그로 인해 일시적으로 이 설정을 해제해야 했던 경험과 적절한 오버커밋 한도를 설정하는 휴리스틱(80% + 2GB)을 공유합니다.
핵심 포인트
- PostgreSQL은 postmaster가 포크한 백엔드 프로세스들이 공유 메모리 세그먼트를 공유하므로 OOM 킬러가 하나를 죽이면 전체 연결이 중단되고 충돌 복구 필요
- 엄격한 오버커밋(strict overcommit)은 메모리 할당 실패 시 즉시 실패(fail early)시켜 OOM 킬러 호출 자체를 방지
- 3글자 커널 버그(
/proc/sys/vm/overcommit_ratio의-1처리 오류)로 인해 일시적으로 설정 해제 필요 - Ubicloud의 권장 설정: 전체 메모리의 80% + 2GB를 오버커밋 한도로 설정
향후 전망
- PostgreSQL 운영 환경에서 메모리 오버커밋 설정이 표준 모범 사례로 자리잡을 가능성
- 커널 레벨에서 PostgreSQL에 특화된 메모리 관리 기능이 추가될 여지
출처:Hacker News (Ubicloud Blog)
