모델 변환 작업 진행중 서버 메모리가 부족해서 프로세스가 강제로 죽는 현상이 생겼습니다.
이를 해결하기 위해 진행했던 작업 및 공부 정리입니다.
Linux 서버나 시스템을 사용하다 보면, 메모리가 부족해지는 경우가 발생할 수 있습니다.
이러한 상황에서 성능 저하를 방지하거나 시스템이 멈추지 않도록 스왑(Swap) 메모리를 추가하는 것이 효과적인 해결 방법입니다.
이 글에서는 Swap 메모리의 개념과 설정 방법을 소개하고, 부족한 메모리를 관리하는 최적의 방안을 설명합니다.
Swap 메모리란?
스왑 메모리는 물리적인 RAM이 부족할 때 디스크 공간을 일시적인 가상 메모리로 사용하는 기능입니다.
메모리가 부족한 경우, 사용하지 않는 데이터를 RAM에서 스왑 공간으로 옮기고 필요한 프로세스를 실행하는 데 메모리를 할당합니다.
하지만 스왑 메모리는 디스크를 사용하기 때문에 속도가 느리다는 단점이 있다.
그럼에도 불구하고, 메모리 부족으로 인한 시스템 크래시나 성능 저하를 방지하는 중요한 역할을 한다.
# 현재 메모리 확인
free -h
스왑 메모리 설정 방법
1. Swap 파일 생성하기
먼저, 스왑 파일을 생성하여 사용할 디스크 공간을 확보합니다. 아래 명령어를 통해 4GB 크기의 스왑 파일을 생성합니다.
sudo fallocate -l 4G /swapfile
fallocate 명령어는 빠르게 빈 파일을 생성합니다.
/swapfile 경로는 스왑 파일의 위치를 나타내며, 원하는 이름과 경로로 변경할 수 있습니다.
2. Swap 파일 권한 설정
보안 문제를 방지하기 위해 스왑 파일의 권한을 600으로 설정합니다. 이는 오직 관리자(root)만이 이 파일에 접근할 수 있도록 제한합니다.
sudo chmod 600 /swapfile
3. Swap 파일 초기화 및 활성화
이제 스왑 파일을 스왑 영역으로 사용하기 위해 초기화합니다.
sudo mkswap /swapfile
그 후, 스왑 메모리를 활성화합니다.
sudo swapon /swapfile
4. 스왑 메모리 확인
스왑 메모리가 제대로 활성화되었는지 확인하려면 다음 명령어를 사용합니다.
swapon --show
이 명령어는 현재 활성화된 스왑 영역의 정보를 보여줍니다.
free -h 로 스왑 메모리가 늘어난걸 확인할 수도 있습니다.
5. 부팅 시 스왑 메모리 자동 활성화
재부팅 후에도 스왑 메모리가 유지되도록 /etc/fstab 파일에 스왑 파일을 추가합니다. 다음 명령어로 파일을 열어 편집합니다.
sudo vim /etc/fstab
파일의 맨 아래에 다음 내용을 추가합니다.
/swapfile none swap sw 0 0
이제 저장하고 나가면 시스템이 재부팅될 때 자동으로 스왑 메모리를 활성화합니다.
재부팅 후 다시
free -h 로 확인 할 수 있습니다.
추가적인 메모리 최적화 방법
불필요한 프로세스 종료: 메모리를 많이 사용하는 프로세스를 확인하고 종료합니다.
캐시 정리: 디스크 캐시가 메모리를 차지하는 경우, 다음 명령어로 캐시를 정리할 수 있습니다.
sudo sync; sudo sysctl -w vm.drop_caches=3
메모리 업그레이드: 물리적인 RAM을 추가하는 것이 근본적인 해결책이 될 수 있습니다.
마무리
Linux 환경에서 메모리 부족 문제를 해결하는 데 있어 스왑 메모리 추가는 유용한 방법입니다.
스왑 파일을 생성하고 설정하는 과정은 간단하며, 시스템의 안정성을 높이는 데 큰 도움을 줍니다.
다만, 스왑 메모리는 속도가 느리기 때문에 RAM을 대체할 수는 없으며, 물리적인 메모리 추가도 함께 고려하는 것이 좋습니다.
스왑 메모리 설정은 메모리 부족 상황에서 중요한 역할을 하므로, 필요에 따라 적절히 설정하고 관리하는 습관을 가지는 것이 좋습니다.
추가) swap 메모리를 과도하게 사용하면 안되는 이유
https://systorage.tistory.com/entry/OS-%EA%B0%80%EC%83%81-%EB%A9%94%EB%AA%A8%EB%A6%ACswap-%EC%82%AC%EC%9A%A9-%EC%8B%9C-CPU-%EC%A0%90%EC%9C%A0%EC%9C%A8%EC%9D%B4-%ED%8F%AD%EC%A6%9D%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0
'Linux' 카테고리의 다른 글
[Linux] E: Unable to locate package ~~ (0) | 2024.11.04 |
---|---|
[Ubuntu] Please install all available updates for your release before upgrading 문제 해결 (0) | 2024.01.10 |
[Linux] Terminal에서 문자열을 base64로 인코딩 하는 방법 (0) | 2023.03.17 |
[PM2] PM2 사용시 서버가 느려지는 문제 해결 (0) | 2022.11.01 |
[Linux] ubuntu 버전 확인하기 (0) | 2022.06.11 |