Search

dnf cache에 의한 OOM Killer 동작

Tags
linux
dnf
cache
oom-killer
Created
2024/05/04 19:39
Created time
2024/05/04 10:39
category
unix

개요

패키지 매니저에서는 패키지에 대한 캐시를 구성하고, 이를 수작업으로 수행하는 명령어도 제공
특히 Centos 관련 패키지 매니저를 대상으로 캐시 동작과 관련하여 문제가 있음을 확인
** Centos의 패키지 매니저로 dnf와 yum이 있고, 둘의 차이는 아래와 같음 (간단하게는 dnf가 더 최신 명령어)
오랫동안 수정되지 않은 문제점으로 성능 저하 존재
패키지 설치 시 의존성 관리 문제 존재
API가 공식적으로 작성되어 있지 않음

증상

이슈는 위와 같고, 아래에 해당하는 명령어 등으로 cache를 주기적으로 정리할 때 메모리 사용량이 치솟는 문제가 존재
yum clean all ; yum makecache
Bash
복사
시스템 상 자원에 따라 다르겠지만, 매우 많은 양의 메모리를 소모하고 있고 이에 따라 OOM을 겪을 수 있음을 확인 가능
실제로 OOM Killer에 의해서 패키지 매니저의 실행만 죽는 것이 아니라, 서버 상에 메인으로 제공하고 있는 서비스 프로세스가 죽을 수도 있음
이는 곧 장애로 이어질 수 있음

해결 방안

스왑 설정

리눅스에서는 메모리를 다량 사용 시, 디스크의 일부 공간을 Swap 영역으로 지정하여 부족한 메모리 공간을 메꾸는 것이 가능
위 이슈에 대해 Red Hat에서는 아래 링크와 같이 Swap 영역을 설정하고, 모자란 공간에 대해선 Swap을 위한 디스크 증설을 권고하고 있음
만일 캐시할 양이 점점 늘어 더 많은 Swap 영역을 요구한다면, 즉각적인 디스크 공간 설정이 없으면 다시 장애가 발생할 수 있음

서비스 비활성화

최신 메타 데이터를 유지하는 장점보다, 예상치 못한 시간에 동작하여 OOM이 발생하는 부작용의 비용이 더 크다고 볼 수 있기에 캐싱을 수행하는 서비스를 비활성화 하는 방안도 존재
비활성화가 해결 방안으로 동작할 수 있는지 의문이 들 수 있지만, (지속적이고 즉각적인 관리가 병행되지 않는 이상) 이전 사항과 같이 스케일링을 겪게 되는 해결 방안도 적절하진 않다고 생각
Centos 시스템 상에서는 패키지 매니저의 메타 데이터를 갱신하는 타이머가 서비스로 동작하고 있는데, 이 역시도 비활성화가 필요
systemctl stop dnf-makecache.service dnf-makecache.timer systemctl disable dnf-makecache.service dnf-makecache.timer systemctl mask dnf-makecache.service dnf-makecache.timer
Bash
복사

결론

dnf takes a lot of ram 관련 이슈에 대해 지속적으로 확인하여 이와 관련된 문제가 해결되는지 파악이 필요
위 링크를 확인해보면 캐시를 기본 옵션으로 로딩하지 않는 제안이 나왔고, 메모리 사용량을 상당히 줄인 것으로 확인
다른 대안으로는 microdnf를 사용하는 방법으로도 제안이 나온 것 같음