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 단축키를 통해 편집기를 종료하는 것으로 설정을 마친다.
'데브옵스(DevOps) > Linux' 카테고리의 다른 글
[Linux] 우분투(Ubuntu) 서버 시간 설정하기 (0) | 2023.09.09 |
---|---|
[Linux] SSH 접속 시 WARNING: UNPROTECTED PRIVATE KEY FILE! 문제 해결 방법 (0) | 2023.09.08 |
[Linux] 리눅스의 사용자 권한과 chmod 명령어 (0) | 2022.08.25 |
[Linux] 리눅스의 apt 명령어 정리 (리눅스 패키지와 패키지 매니저) (0) | 2022.08.24 |
[Linux] 리눅스의 텍스트 에디터 nano (0) | 2022.08.24 |