Published on

AWS EC2 스왑 메모리 사용

Authors
  • avatar
    Name
    ywj9811
    Twitter

EC2의 프리티어는 돈없는 개발자에게 정말 좋은 도구이다.

하지만 프리티어 서버는 한없이 초라한 서버로 RAM이 1GB 밖에 할당되어 있지 않다.

그래서 자칫 잘못하면 서버가 죽어버릴 수 있다.

Untitled

그러다보니 위와 같이 어플리케이션에 요청이 발생하지 않는 상태에서도 RAM의 83.5% 사용중이라는 엄청난 수치를 보여준다 😢

그렇다면 이것을 해결할 방법이 없을까

지인이 이 상황에 대해서 스왑 메모리 사용여부를 물어보았고, 나는 위의 사진에서 보이는 것과 같이

SWAP Total = 0B 이렇게 스왑 메모리는 사용하지 않고 있었다.

따라서 스왑 메모리를 추가하여 RAM이 부족할 때 임시방편으로 사용할 수 있도록 대비를 해보도록 하자.

스왑 메모리란

우선 스왑 메모리란 무엇인지 살펴보자.

학교에서 운영체제를 배웠다면 가상 메모리, 스왑 메모리 등등 한번쯤 들어는 보았을 것이다.

이는 RAM이 가득 찼는데 더 많은 메모리가 필요하면 디스크 공간을 가져와서 사용하는 방법을 이야기 하는데, 물론 디스크 공간을 사용하는 것이기 때문에 RAM과 같은 좋은 성능은 낼 수 없지만 시스템이 다운되거나 장애를 일으키는 일을 방지하여 안정성을 높이는 방법이다.

AWS EC2에 스왑 메모리 할당

이제 EC2 서버에 스왑 메모리를 할당시켜서 안정성을 높여보자.

Untitled

레드햇에서 에서 알려주는 권장하는 스왑 공간이다.

프리티어의 RAM은 1GB 이기 때문에 RAM의 두배 크기를 할당하도록 하자.

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

공식 홈페이지에서 스왑 메모리 할당하는 방법을 소개해주고 있지만, 내용을 정리하자면 다음과 같다.

sudo dd if=/dev/zero of=/swapfile bs=128M count=16
# 스왑 메모리 할당으로 bs=128M 와 count=16은 128MB씩 16개를 할당한다는 것이다.
sudo chmod 600 /swapfile
# 스왑 파일에 대한 읽기 및 쓰기 권한을 준다.
sudo mkswap /swapfile
# Linux 스왑 영역을 설정한다.
sudo swapon /swapfile
# 스왑 공간에 스왑 파일을 추가하여 스왑 파일을 즉시 사용할 수 있도록 한다.
sudo swapon -s
# 프로시저가 성공적인지 확인합니다.

여기까지 진행을 하고

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

sudo vi /etc/fstab
# 편집기에서 파일을 열고 아래의 내용을 파일의 맨아래에 추가한다.
/swapfile swap swap defaults 0 0

그리고 다시 확인을 해보면

Untitled

이와 같이 SWAP Total에 2GB가 할당된 모습을 확인할 수 있다.

그리고 RAM 또한 사용량이 약간 줄어들고(SWAP이 약간 사용중이라 나온다. 진짜 아주 약간), FileSystem의 사용량은 반대로 늘어난 모습을 확인할 수 있다.

물론 기존의 RAM과 같은 성능을 기대할 수 없겠지만, 서버 자체를 ScaleUp하거나 Out하는 것은 비용이 들기도 하고 부담이 되기에 이렇게 스왑 메모리를 할당하여 서버가 다운되거나 시스템에 문제가 생기는 것을 방지할 수 있다.