EC2 Linux(Ubuntu) 메모리 늘리기

Yoon Uk·2023년 8월 9일
0

운영체제

목록 보기
1/11
post-custom-banner

문제

EC2 프리티어 버전 하나에 젠킨스, 백엔드 서버(Spring), DB(Docker), Redis(Docker)를 모두 돌리려고 하니 메모리가 부족해 인스턴스가 죽는 상황이 발생했습니다.(프론트엔드(React) 도 돌리려고 했음 ㅎㅎ..)

해결

EC2 프리티어 버전은 vCPU 1개, RAM 1GB, 스토리지 8GB(최대 30GB) 입니다. 여기서 비교적 여유가 있는 스토리지의 용량을 활용해 Swap 메모리를 활용해 해결했습니다.

리눅스에서는 SWAP 메모리를 지정해 사용할 수 있습니다.
이 때, Swap 메모리란 RAM이 부족한 경우 스토리지(HDD)의 일정공간을 마치 RAM처럼 사용하는 것을 말합니다. 이를 통해 RAM을 증설한 듯한 효과를 볼 수 있습니다.

보통 swap memory는 할당된 램 메모리의 2배 또는 그 이상을 추천하고 있어 2GB 이상의 swap memory를 확보했습니다.

스왑 파일 생성

AWS 공식 답변 및 해결법

1. 스왑 파일 생성

dd 명령을 사용하여 루트 파일 시스템에 스왑 파일을 생성합니다.
명령에서 bs는 블록 크기이고 count는 블록 수입니다. 스왑 파일의 크기는 dd 명령의 블록 크기 옵션에 블록 수 옵션을 곱한 값입니다. 이러한 값을 조정하여 원하는 스왑 파일 크기를 결정합니다.

지정한 블록 크기는 인스턴스에서 사용 가능한 메모리보다 작아야 합니다. 그렇지 않으면 "memory exhausted" 오류가 발생합니다.

이 상황의 dd 명령에서 스왑 파일은 2GB(128MB x 16)입니다.

$ sudo dd if=/dev/zero of=/swapfile bs=128M count=16

2. 스왑 파일의 읽기 및 쓰기 권한을 업데이트합니다.

$ sudo chmod 600 /swapfile

3. Linux 스왑 영역을 설정합니다.

$ sudo mkswap /swapfile

4. 스왑 공간에 스왑 파일을 추가하여 스왑 파일을 즉시 사용할 수 있도록 합니다.

$ sudo swapon /swapfile

5. 프로시저가 성공적인지 확인합니다.

$ sudo swapon -s

6. /etc/fstab 파일을 편집하여 부팅 시 스왑 파일을 시작합니다.

편집기에서 파일을 엽니다.

$ sudo vi /etc/fstab

위에서 vi로 연 파일의 끝에 다음 줄을 새로 추가하고 파일을 저장한 다음 종료합니다.

/swapfile swap swap defaults 0 0

7. free 명령어로 메모리 확인

free

위의 캡쳐는 4GB를 swap memory로 확보했을 때의 결과입니다.
2GB를 확보했다면 Swap 행의 total 열이 2097144 정도가 되어 있을 것입니다.

마무리

Scale-Up을 통해 RAM을 업그레이드 하는 방법에 비해서는 느리지만 취준생의 자금 상황을 생각하면 괜찮은 방법이라고 생각합니다.

post-custom-banner

2개의 댓글

comment-user-thumbnail
2023년 8월 9일

정보 감사합니다.

1개의 답글