페이지 캐시가 제거되지 않지만 OOM 킬러가 프로세스를 종료합니다.

페이지 캐시가 제거되지 않지만 OOM 킬러가 프로세스를 종료합니다.

때때로 로드가 발생하는 프로덕션 서버에서 다음 문제가 발생합니다(Linux 4.10).

  1. 로드를 처리하는 애플리케이션(웹 서버)이 높은 로드에서 실행 중입니다.
  2. 새 작업이 시작됩니다(예: cron). 이를 위해서는 메모리 할당에 실패하는 clone() 시스템 호출이 필요합니다.
  3. 커널 OOM 킬러가 시작되고 웹 서버 응용 프로그램 프로세스 중 하나를 종료하여 새 작업을 시작할 수 있습니다.
  4. "free -m"은 여유 메모리가 서버의 64GB 중 약 1~3GB로 매우 낮음을 나타냅니다. 그러나 대부분의 메모리는 페이지 캐시에 있습니다.
  5. 시스템에는 스왑 파티션/파일 설정이 없으며 vm.swappiness는 기본값인 60으로 설정됩니다.

대신 로드가 시작되기 전에 "echo 3 > /proc/sys/vm/drop_caches"를 실행했다면 OOM이 웹 서버 애플리케이션을 종료하지 않고 모든 것이 잘 작동합니다.

위의 조건에서 일부 메모리를 해제하기 위해 프로세스를 종료하기 전에 커널이 페이지 캐시를 해제하지 않습니까?

관련 정보