데브옵스(DevOps)/Linux

[AWS] 프리티어 EC2 인스턴스 메모리 부족 현상 해결하기(램 성능 개선)

잇트루 2023. 1. 13. 01:55
반응형

Intro

AWS 프리티어 계정으로 EC2를 사용하다 보면 램 부족 현상으로 인해 서버가 자주 터지게 된다.

프로젝트 빌드 도중에 멈추기도 하고, 서버가 갑자기 다운되는 현상이 자주 발생할 수 있다.

 

 

AWS 프리티어 EC2 인스턴스

AWS에서 제공하는 프리티어 EC2 인스턴스의 성능은 기본적으로 1GB 메모리와 스토리지 최대 30GB를 제공한다.

스토리지 공간은 충분하지만, 램 부족 현상으로 인해 서버가 자주 다운되는 현상이 발생하게 된다.

따라서, 리눅스에서 제공하는 RAM swap을 통해 부족한 메모리 현상을 해결하고자 한다.

 

 

Swap Space(스왑 공간)

먼저, Swap Memory 사용하기 전에 메모리 스왑을 할 공간(Swap Space)을 마련해야 한다.

Swap Space는 물리적인 메모리 용량에 비례하여 마련해야 한다.

 

RAM ≤ 2GB

Swap Space는 RAM의 2배의 공간을 마련해야 한다.

  • RAM이 1GB인 경우 Swap Space는 2GB

 

2GB < RAM < 32GB

Swap Space는 (RAM - 2GB) + 4GB 크기의 공간을 마련해야 한다.

  • RAM이 4GB인 경우 Swap Space는 6GB

 

RAM ≥ 32GB

Swap Space는 RAM만큼의 공간을 마련해야 한다.

  • RAM이 32GB인 경우 Swap Space는 32GB

 

 

RAM Swap 하기

테스트한 EC2 인스턴스 스펙

  • Ubuntu Server 20.04 LTS (HVM), SSD Volume Type
  • 메모리 : 1GB
  • 스토리지 : 20GB

 

시스템 업데이트

sudo apt update

 

텍스트 에디터 설치

sudo apt install -y nano
  • vi(vim), emacs 등의 에디터도 사용해도 되지만, 가장 다루기 쉬운 nano를 설치했다.

 

Swap Space 생성하기

기본적으로 AWS 프리티어 계정에서 제공되는 무료 EC2 인스턴스는 메모리가 1GB이기 때문에 2배인 2GB로 생성한다.

 

아래 명령어를 순서대로 입력하여 Swap Space를 생성하다.

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile

 

다음과 같이 성공적으로 스왑공간이 생성되었는지 확인한다.

// 출력
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=8f85218d-329c-4eec-bf11-5d87964c5f0d

 

RAM Swap 하기

아래 명령어를 통해 RAM Swap을 시작한다.

sudo swapon /swapfile

 

이후 아래 명령어를 통해 스왑 생성에 대한 확인을 할 수 있다.

sudo swapon --show
// 출력
NAME      TYPE SIZE USED PRIO
/swapfile file   2G   0B   -2

 

다음 명령어를 통해 시스템에서 사용할 수 있는 메모리 공간을 확인할 수 있다.

free -h
// 출력
total        used        free      shared  buff/cache   available
Mem:          966Mi       267Mi        58Mi       0.0Ki       640Mi       509Mi
Swap:         2.0Gi          0B       2.0Gi

 

RAM Swap 자동 활성화

위 과정을 성공적으로 했다면, RAM Swap이 이루어진다. 하지만, EC2 인스턴스를 재부팅하게 되면 다시 초기화되기 때문에 재부팅하더라도 자동으로 RAM Swap이 활성화되도록 설정해야 한다.

 

RAM Swap 자동 활성화는 다음과 nano 에디터를 통해 설정할 수 있다.

sudo nano /etc/fstab

 

/swapfile swap swap defaults 0 0 명령어 추가

LABEL=cloudimg-rootfs   /        ext4   discard,errors=remount-ro       0 1
LABEL=UEFI      /boot/efi       vfat    umask=0077      0 1
/swapfile swap swap defaults 0 0

이후 ctrl + s 단축키를 통해 수정한 텍스트 파일을 저장하고, ctrl + x 단축키를 통해 편집기를 종료하는 것으로 설정을 마친다.

반응형