AWS EC2 인스턴스 프리티어 t2.micro 를 사용한다면, 부족한 메모리용량 때문에 서비스가 중단되는 경우가 있다.
물론 서버에 올려둔 프로젝트의 무게 자체를 줄이는 방법으로 해결할 수도 있지만, EC2에서 가용할 수 있는 메모리 용량을 증가시켜서 해결할 수도 있다.
이번 포스팅에서는 AWS EC2가 메모리용량 부족으로 다운될 때, 메모리 용량을 증설 시킬 방법에 대해서 포스팅해본다.
간단한 방법으로 인스턴스의 유형 자체를 변경하는 것이다.
t2.micro가 메모리 용량이 모자라다면, 다른 인스턴스를 가져다쓰면 되는것이다.
현재 사용하는 인스턴스에서 메모리만 바꿀수 없다. 인스턴스는 이미 구조가 완성된 고정된 서버컴퓨터이다.
따라서 우리는 대여하는 인스턴스를 하나의 PC방 컴퓨터라고 생각하면 쉽다.
PC방 컴퓨터 또한 자리마다 스팩이 다른 이미 완성된 컴퓨터가 있고, 우리는 그 컴퓨터의 스팩을 보고 자리를 대여한다. PC방 컴퓨터도 스팩이 낮은 자리에 앉아서 부품을 바꿔달라고 할 수 않는가?
방법은 아주 간단하다. AWS EC2인스턴스의 유형을 참고해서, 본인에게 필요한 인스턴스로 유형을 변경하면 된다.
본인의 인스턴스에 CPU, 메모리, 하드용량 등 부족한 부분이 더 나은 인스턴스로 유형을 변경하면 된다.
우선 현재 변경하고 싶은 인스턴스의 동작을 중지시킨다.
해당 인스턴스에 "우클릭" > 인스턴스설정 > 인스턴스 유형 변경을 클릭해준다.
다만 우리는 인스턴스를 무료로 대여하기 위해서 t2.micro를 사용한다. 하지만 위와같이 유형을 변경하게 된다면, 유형별 인스턴스에 따라서 요금이 부과될 것이다.
1번 방법처럼 돈으로 해결하는 방법이 가장 쉽지만, 나와 같은 취준생은 돈 한푼한푼이 귀한 상황이라, 좀 귀찮아도 무료 인스턴스를 이용하면서 메모리용량을 증설시키는 방법으로 문제를 해결해야 할 것이다.
이럴때 사용하는 방법이 리눅스의 스왑파일을 이용하는 방법이다.
ec2인스턴스에 한정된게 아니라 리눅스OS에서 가상 메모리 관리 시스템에서 사용되는 개념 중 하나이다.
스왑 파일은 주 메모리 (RAM)가 부족한 경우, 더 많은 데이터를 저장할 수 있도록 하기 위해 디스크 공간을 사용하는 방법으로 이렇게 얻게된 공간을 스왑공간이라고 부른다.
리눅스 운영 체제에서 프로세스는 주로 RAM에 적재되어 실행되는데, 때로는 시스템의 물리적인 RAM 용량보다 더 많은 메모리가 필요한 상황이 발생할 수 있다(메모리 부족으로 서버터짐 등). 이때 스왑 파일은 더 많은 데이터를 저장할 수 있는 보조 메모리 공간으로 사용된다. 스왑 파일은 하드 디스크의 일부 영역을 사용하여 주 메모리를 확장시켜준다.
할당하는 방법은 AWS 지식센터에서 자세히 설명해주고 있다.
아래 명령어를 통해 현재 스왑공간을 확인한다.
free -h
할당된 스왑공간이 없는 것을 확인할 수 있다.
1.스왑파일을 생성
sudo dd if=/dev/zero of=/swapfile bs=128M count=16
swapfile 이름을 가진 이 파일이 최상위 경로에 생성된다.
스왑 공간의 크기는 블록하나의 크기(bs)x블록의 개수(count)로 대략 2GB
2.chmod 명령어를 통한 읽기 및 쓰기 권한 변경
sudo chmod 600 /swapfile
3.Linux 스왑 영역설정 및 프로시저 확인
sudo mkswap /swapfile
sudo swapon /swapfile
sudo swapon -s
4.부팅시 스왑파일이 시작되도록 설정
sudo vi /etc/fstab
vi 편집기로 해당 디렉토리 파일에 들어가서 가장 아래 다음 내용을 추가하고 저장한다.
/swapfile swap swap defaults 0 0
5.스왑공간이 잘 할당 되었는지 확인
free -h
2GiB(2기비바이트)가 잘 할당 된 것을 확인할 수 있다.