PostgreSQL과 OOM 킬러의 충돌… “메모리 오버커밋”을 엄격히 막아야 하는 이유

PostgreSQL은 OOM 킬러에 취약하여 공유 메모리 손상과 전체 서버 중단을 초래할 수 있습니다. Linux의 메모리 오버커밋 정책으로 인해 OOM 킬러가 백엔드 프로세스를 종료하면, postmaster가 모든 연결을 끊고 충돌 복구를 수행합니다. 이를 방지하기 위해 엄격한 메모리 오버커밋 설정(예: 80% + 2GB)이 권장됩니다.

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에 특화된 메모리 관리 기능이 추가될 여지
Share

이것도 읽어보세요

댓글

이 소식에 대한 의견을 자유롭게 남겨주세요.

댓글 (0)

불러오는 중...