EC2 프리티어의 메모리, 1GB는 터무니 없이 작다.

Jenkins 하나만 돌려도 메모리 1GB의 대부분을 사용한다. 적은 메모리로 프로그램을 돌리다보면 인스턴스 자체가 죽어버리는 일이 자주 볼 수 있다.

 

그 중 하나의 해결책으로 하드디스크를 가상메모리로 사용하여 메모리 양을 늘려주는 방법에 대해 소개하겠다.

 

본 글은 아래 2개의 포스팅을 참고하여 작성하였다.

 

 

 

스왑 파일을 사용하여 Amazon EC2 인스턴스의 스왑 공간으로 메모리 할당

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

aws.amazon.com

 

 

OKKY | AWS EC2 프리티어 쓰시는분들 참고하세요!

일기장에 기록해둔건데 프리티어 쓰시는 분들에겐 좋은 정보일것 같아 남깁니다. 제 일기장에서 긁어온거라 폼이 많이 깨지긴 했는데 감안하고 봐주세요!   AWS 프리티어 EC2를 사용 중 겪은 문

okky.kr


하드디스크를 가상 메모리로 사용하기 

 

AWS에서는 메모리의 양에 따라 스왑 메모리의 크기를 아래와 같이 권장하고 있다.

물리적 RAM의 양 권장 스왑 공간
RAM 2GB 이하 RAM 용량의 2배(최소 32MB)
RAM 2GB 초과, 32GB 미만 4GB + (RAM – 2GB)
RAM 32GB 이상 RAM 용량의 1배

참고: 스왑 공간은 절대로 32GB 미만이 되지 않아야 한다.

 

스왑 파일 생성

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

1. dd 명령을 사용하여 루트 파일 시스템에 스왑 파일을 생성한다.

명령에서 bs는 블록 크기이고 count는 블록 수이다.

지정한 블록 크기는 인스턴스에서 사용 가능한 메모리보다 작아야 한다.

그렇지 않으면 memory exhausted 오류가 발생한다.

 

프리티어의 메모리는 1GB이니, 권장사항대로라면 2GB를 증설시켜야 한다.

이 예제 dd 명령에서 스왑 파일은 2GB(128MB x 16 = 2,048MB)이다.

4GB를 늘리고 싶다면 4GB(128MB * 32)에 해당되도록 블록 count 값을 32로 설정해주면 된다.

 

$ sudo chmod 600 /swapfile

2. 스왑 파일에 대한 읽기 및 쓰기 권한을 업데이트

 

$ sudo mkswap /swapfile

3. Linux 스왑 영역을 설정

 

$ sudo swapon /swapfile

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

 

$ sudo swapon -s

5. 절차가 성공했는지 확인

 

$ sudo vi /etc/fstab

6. /etc/fstab 파일을 편집하여 부팅 시 스왑 파일을 활성화

 

/swapfile swap swap defaults 0 0

편집기에서 파일을 연 후 파일 끝에 다음 줄을 새로 추가하고 파일을 저장한 다음 종료한다.

 

7. free를 다시 입력하여 메모리를 확인해본다. 아래처럼 Swap 영역이 2GB로 되어있으면 성공.

$ free
              total        used        free      shared  buff/cache   available
Mem:         989140      151748      198108         444      639284      695068
Swap:       2097148           0     2097148

 

'AWS' 카테고리의 다른 글

서버리스  (0) 2023.09.05
클라우드 컴퓨팅, IaaS, PaaS, SaaS  (0) 2021.07.28

+ Recent posts