요즘 프로젝트때문에 EC2를 이용할 일이 많은데 자꾸 알 수 없는 멈춤 현상이 나타난다.
이유는 바로 ec2프리티어에서 제공하는 인스턴스의 메모리 문제였다.

ec2에서 프리티어로 제공하고 있는 t2인스턴스는 t2.micro.
메모리가 1GB밖에 되질 않는다.....!
사무용 저사양 PC: 4GB RAM
일반적인 사용자: 8GB RAM
고사양 게임, 그래픽용 사용자: 16GB RAM
위의 권장 메모리를 보고나니 더 마음이 아픈 사양이다...ㅠ
공짜인데 이게 어디냐 라고 생각하던 찰나, 인터넷으로 해결방법을 찾았다....!
스왑 파일을 사용하여 Amazon EC2 인스턴스에서 스왑 스페이스로 작동하도록 메모리를 할당하려면 어떻게 해야 하나요?
- 스왑이란?
스왑 메모리란, 실제 메모리 Ram이 가득 찼지만 더 많은 메모리가 필요할때 디스크 공간을 이용하여 부족한 메모리를 대체하는 기술.
실제 디스크 공간을 메모리처럼 사용하는 개념이기 때문에 가상 메모리라고 할 수 있다.
속도면에서는 실제 메모리가 아닌 하드디스크를 이용하는 것이기 때문에 메모리 속도면에서는 현저히 떨어지긴함.
free tier의 EC2 메모리가 부족하더라고 Swap 메모리로 메꿔서, 여러 개의 프로세스를 동시에 띄울 수 있음..!
- 메모리에 따라 AWS가 권장하는 스왑메모리의 크기

즉 프리티어는 1GB이므로, 2GB를 스왑메모리로 활용해보자...!
- 스왑하기

스왑 메모리가 비어있는것을 확인 할수 있음...!
sudo dd if=/dev/zero of=/swapfile bs=128M count=16

- dd 명령어를 사용하여 루트 파일 시스템에 스왑 파일을 생성한다.
- bs는 블록 크기, count는 블록 수
- 참고로 당연히 블록크기는 인스턴스상에있는 메모리보다 작아야한다.
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

스왑 파일을 즉시 사용할 수 있도록 만든다...!
sudo swapon -s

sudo vi /etc/fstab
/swapfile swap swap defaults 0 0

/etc/fstab는 리눅스 부팅시 마운트정보를 저장하고 있는곳.
편집기에서 파일을 연 후 파일 끝에 다음 줄을 새로 추가하여 부팅 시 스왑 파일을 활성화해주자...!
free -h

정삭적으로 메모리 스왑이 잘되었다.......!
진짜 ec2 정지 현상이 없어졌다.
최근 CI/CD를 공부하는 과정에서 여러가지 프로세스들을 키다보니 메모리가 많이 부족했는데 알게되어서 참 다행이다.