본문 바로가기
쿤즈 Server/AWS

[AWS] 아마존 ec2 무료 티어 메모리 부족 현상

by :)Koon 2021. 2. 15.

아마존 ec2 무료 티어는 가상 CPU 1개, 1 GiB의 메모리, 8 GiB의 스토리지를 가지는 서버입니다. 무료로 제공되는 만큼 대용량의 프로세스를 올리기에는 부족한 면이 있지만 공부하는 입장에서 사용하기에는 굉장히 좋은 서버라 생각되기도 합니다.

 

 

저도 아마존 ec2 무료티어에서 React를 공부하던 도중 이상한 점을 발견하였습니다. 소스를 수정하고 컴파일을 하게 되면 SSH이 끊긴다던지, VSCode가 끊기는 현상이 발생하는 겁니다. 이유는 메모리가 부족하다는 이유였습니다. 그래서 아마존에서는 이러한 부분을 보완하기 위해서 Swap을 하는 방법을 알려주고 있었습니다.

 

오늘 포스팅에서는 메모리가 부족해서 발생되는 현상을 보완하기 위한 swap을 알아보도록 하겠습니다.


스왑(Swap)이란 무엇인가

스왑은 물리적인 메모리의 용량이 한계가 왔을때 추가적으로 사용할 수 있는 메모리 공간을 말합니다. 보통 모든 프로세스(실행되는 프로그램)들은 모두 메모리에 공간이 할당됩니다. 그리고 할당된 이후에 정상적으로 실행되게 됩니다. 하지만 많은 프로그램들을 실행하다 보면 메모리가 가득 차게 되고 더 이상 메모리의 공간을 사용할 수 없게 되어 프로그램이 실행되지 않게 됩니다.

 

 

스왑은 물리적인 메모리 공간이 가득 찼을때 하드디스크(HDD) 혹은 SSD의 일정 부분을 할당받아 여유 메모리 공간으로 사용할 수 있게 해주는 방법을 의미합니다. 여기서 알아두어야 할 부분은 HDD와 SSD는 메모리보다 훨씬 느리기 때문에 실제 메모리의 대체라 생각하시면 안 됩니다.

 

그럼 아마존 ec2 무료 티어에서 스왑을 하는 방법을 알아보도록 하겠습니다.


아마존 ec2 무료 티어에서 스왑 설정 방법

보통 스왑 공간 크기를 계산할 때에는 다음과 같이 계산합니다.

  • RAM 2GB 이하 : RAM 용량의 2배
  • RAM 2GB 초과, 32GB 미만 : 4GB + (RAM - 2GB)
  • RAM 32GB 이상 : RAM 용량의 1배

여기서 중요한 부분은 스왑 공간은 절대로 32MB 미만이 되어서는 안 됩니다. 즉, RAM 2GB 이하일 때 최소 32MB 이상으로 스왑 공간을 만들어 주어야 합니다.

 

아마존에서도 공식적인 문서로 스왑을 처리하는 방법을 알려주고 있습니다.

아마존 해결방법 : https://aws.amazon.com/ko/premiumsupport/knowledge-center/ec2-memory-swap-file/

그럼 스왑 공간으로 사용할 수 있는 파일을 만들어 주도록 하겠습니다. 다음과 같은 순서로 진행해 주시면 됩니다.

1. dd 명령을 이용한 스왑 파일 생성

dd명령을 사용하여 리눅스 파일 시스템에 스왑 파일을 생성합니다. 파일은 루트에 생성합니다.

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

여기서 bs는 블록의 크기이며 count는 블록의 수입니다. 즉, 128MB의 블록 32개를 만들겠다는 내용이므로 128MB x 32 = 4GB의 스왑 파일이 생성되는 것입니다.

2. 스왑 파일 권한 변경

다음은 스왑 파일에 대한 읽고, 쓰기 권한을 변경해 줍니다. 변경하는 명령어는 chmod입니다.

$ sudo chmod 600 /swapfile

1번에서 파일 시스템의 루트(/) 밑에 swapfile이라는 이름으로 파일을 생성했고 이 파일의 권한을 변경해준 것입니다. 600이라는 값은 rwx에서 rw의 권한을 준 것으로 읽고 쓰기에 대한 권한을 준 것입니다.

3. 스왑 영역 설정

이번은 권한 변경한 스왑 파일의 영역을 설정합니다. mkswap은 스왑을 만들겠다는 명령어입니다.

$ sudo mkswap /swapfile

이 명령어를 실행하고 나면 위에서 만든 /swapfile이라는 파일을 이제 스왑으로 사용하겠다고 영역 설정을 하는 것입니다.

4. 사용할 수 있도록 추가

스왑 영역을 만들었다 하더라도 바로 사용할 수 있는 것은 아닙니다. 이 공간을 사용한다고 추가해 주어야 합니다.

$ sudo swapon /swapfile

swapon이라는 명령어를 사용해서 만든 스왑 파일(/swapfile)을 즉시 사용할 수 있도록 설정해 줍니다.

5. 스왑 성공 여부 확인

1~4번까지 명령어를 입력했을 때, 정상적으로 성공했는지를 알기 위해서 다음과 같은 명령어를 사용합니다.

$ sudo swapon -s

명령어를 실행하면 스왑 파일이 나타나며 사이즈와 사용하고 있는 양을 나타내는 숫자가 등장합니다. 정상적으로 설정되었다면 파일이 나타납니다.

 

여기까지만 설정해도 스왑이 정상적으로 설정됩니다. 다만 재부팅이 필요할 경우 재부팅 이후에는 다시 스왑이 사라지게 됩니다. 따라서 파일 시스템에 이를 알려주는 설정이 필요합니다. 이는 vi 편집기를 통해서 변경할 수 있습니다.

파일 시스템 정보 변경

먼저 파일시스템 정보가 있는 파일부터 편집기로 열어줍니다.

$ sudo vi /etc/fstab

열었다면 가장 마지막 줄에 아래와 같이 추가해 줍니다.

/swapfile swap swap defaults 0 0

추가되었다면 재부팅 이후에도 정상적으로 스왑 파일이 마운트 되어 사용되게 됩니다.

확인을 위해서 free라는 명령어를 이용해 보면 현재 시스템의 메모리 양과 스왑 파일이 나타나게 됩니다.


이번 포스팅에서는 애플리케이션을 실행하던 도중에 ssh 또는 vscode가 접속 해제되는 현상으로 어려움을 겪고 있는 분들에게 필요한 정보가 되었으면 됩니다. 저도 처음에 굉장히 당황스러웠던 기억이 나네요. 무료로 사용하는 데에는 제한이 있지만 그래도 사용할 수 있는 만큼은 최대로 사용해 볼 수 있으면 좋겠습니다. 이상입니다.

 

 

댓글