InfoGrab DocsInfoGrab Docs

메모리 사용량 줄이기

Sidekiq 메모리 킬러를 사용하여 메모리를 과도하게 소비하는 백그라운드 job 프로세스를 자동으로 관리합니다.

Sidekiq 메모리 킬러는 메모리를 과도하게 소비하는 백그라운드 job 프로세스를 자동으로 관리합니다. 이 기능은 워커 프로세스를 모니터링하다가 Linux 메모리 킬러가 개입하기 전에 프로세스를 재시작하므로, 백그라운드 job 이 정상 종료 전에 끝까지 실행될 수 있습니다. 이러한 이벤트를 로그로 남기므로 메모리를 많이 쓰는 job을 더 쉽게 식별할 수 있습니다. Sidekiq 메모리 모니터링 방식 # GitLab은 기본적으로 Linux 패키지 설치와 Docker 설치에서만 사용 가능한 RSS 제한을 모니터링합니다. GitLab 이 메모리 문제로 종료된 Sidekiq를 재시작하는 데 runit에 의존하는데, 직접 컴파일 설치와 Helm 차트 설치는 runit 이나 그에 준하는 도구를 사용하지 않기 때문입니다. 기본 설정에서 Sidekiq는 15분에 한 번보다 자주 재시작되지 않으며, 재시작 시 들어오는 백그라운드 job에 약 1분의 지연이 발생합니다. 일부 백그라운드 job은 장시간 실행되는 외부 프로세스에 의존합니다. Sidekiq가 재시작될 때 이러한 프로세스가 깔끔하게 종료되도록 하려면 각 Sidekiq 프로세스를 프로세스 그룹 리더로 실행합니다(예: chpst -P 사용). Linux 패키지 설치를 사용하거나 runit 이 설치된 상태에서 bin/background_jobs 스크립트를 사용한다면 이 부분은 자동으로 처리됩니다. 제한 구성 # Sidekiq 메모리 제한은 환경 변수 로 제어합니다. SIDEKIQ_MEMORY_KILLER_MAX_RSS (KB): 허용 RSS에 대한 Sidekiq 프로세스 소프트 제한을 정의합니다. Sidekiq 프로세스의 RSS(킬로바이트 단위)가 SIDEKIQ_MEMORY_KILLER_MAX_RSS 를 초과한 상태로 SIDEKIQ_MEMORY_KILLER_GRACE_TIME 보다 오래 지속되면 정상 재시작이 시작됩니다. SIDEKIQ_MEMORY_KILLER_MAX_RSS 가 설정되지 않았거나 값이 0 이면 소프트 제한을 모니터링하지 않습니다. SIDEKIQ_MEMORY_KILLER_MAX_RSS 의 기본값은 2000000 입니다. SIDEKIQ_MEMORY_KILLER_GRACE_TIME : Sidekiq 프로세스가 허용 RSS 소프트 제한을 넘은 상태로 실행되도록 허용하는 유예 시간(초)을 정의합니다. Sidekiq 프로세스가 SIDEKIQ_MEMORY_KILLER_GRACE_TIME 안에 허용 RSS(소프트 제한) 아래로 내려가면 재시작은 취소됩니다. 기본값은 900초(15분)입니다. SIDEKIQ_MEMORY_KILLER_HARD_LIMIT_RSS (KB): 허용 RSS에 대한 Sidekiq 프로세스 하드 제한을 정의합니다. Sidekiq 프로세스의 RSS(킬로바이트 단위)가 SIDEKIQ_MEMORY_KILLER_HARD_LIMIT_RSS 를 초과하면 Sidekiq의 정상 재시작이 즉시 시작됩니다. 이 값이 설정되지 않았거나 0 이면 하드 제한을 모니터링하지 않습니다. SIDEKIQ_ME