1 분 소요

리눅스 메모리 부족 에러

AWS의 Lightsail사용하여 서버 터미널에서 룰루랄라 Docker을 빌드하고 Docker 이미지를 실행할려고 했는데..

image

누구세요 ㅠㅠ…. 🤣 Error code 137은 초면 인데요,,??? 폭풍 구글링 후..

정답은 swap에 있었다. swap은 구면이고 운영체제를 들은 것을 회상하자면.. 실행중인 프로세스가 잠시 swap out해서 backing store로 보내졌다가 나중에 swap in되는 그리고… 메모리공간이 아주 위험할 때만 쓰는걸로 기억되는데 메모리가 큰 프로세스일 수록 컨텍스트 스위칭이기때문에 시간이 오래걸린다고….. 아 암튼 이게 중요한 게 아니고

메모리공간 뿐만 아니라 내가 위험하다…. 어서 적용하자!!

해결방법 😍

리눅스에서 메모리 용량이 부족할 경우 리눅스 swap 파티션을 사용하게 된다. 하지만 swap 파티션 또한 용량이 부족할 경우 프로그램이 실행이 되지 않거나 out of memory, Cannot allocate memory 등의 문제가 발생 할 수도 있다. 따라서 swap 파티션 용량을 조절할 수도 있지만 간단히 리눅스 swap 파일을 추가하여 해결하자

1️⃣ 메모리 용량 및 swap 확인

시스템에서 소스코드 빌드를 하거나, 프로그램 설치, 실행하는 과정에서 물리 메모리, swap 용량이 충분하지 않을 경우 문제가 될 수 있다.

Swap 용량 확인

  • 현재 할당된 swap 파일 또는 swap 파티션의 swap 용량을 확인하기 위해서 아래의 명령어를 실행한다
$ sudo swapon -s
  • 위의 명령의 실행결과가 없다면 swap 파티션 또는 swap 파일이 없는 것

메모리 용량 확인

$ sudo free -m
  • 위의 명령어를 실행하여 전체 메모리 용량 및 사용 가능한 메모리 용량 확인

2️⃣ swap 파일 만들기

swap 파일 생성

  • swap 파일을 생성하고 권한을 설정, 4G 크기의 swap 파일을 생성할 예정
$ sudo fallocate -l 4G /swapfile
$ sudo chmod 600 /swapfile
  • 용량 또는 파일이름은 알아서 변경하여 실행하면 됨

3️⃣ swap 파일 설정


$ sudo mkswap /swapfile
Setting up swapspace ...
$ sudo swapon /swapfile

4️⃣ swap 확인

  • swapon 명령어를 이용하여 장치를 확인하면 정상적으로 swap 파일이 사용중인 것을 알 수 있음
$ sudo swapon -s
FilenameTypeSizeUsedPriority
/swapfile                              file    4194300103936-2

5️⃣ 환경설정

  • 재부팅 되면 swap 파일이 적용되지 않기 때문에 /etc/fstab 파일을 수정하여 부팅시 자동으로 swap 파일이 사용되도록 설정한다. 아래의 내용은 /etc/fstab 파일에 추가하면 재부팅 후에도 swap 파일이 사용됨
/swapfile     none    swap    sw    0 0

댓글남기기