무료인 EC2 프리티어를 사용할 때, 자바 빌드를 하다 보면 CPU 사용률이 100%를 찍으며 EC2 서버가 멈춘다.
이 문제가 일어나는 이유는, EC2 프리티어를 사용할 경우 t2.micro의 RAM이 1GB밖에 되지 않아, 메모리가 부족하여 ssh 접속도 멈추는 경우이다. 나도 이 문제때문에 EC2와 멀어졌다가, 최근 해결법을 알아서 공유해보고자 한다.
사전에 swap 메모리를 할당한다
아래처럼 EC2 인스턴스의 리눅스 쉘에 명령을 입력하여 작업한다.
임시로 swap 메모리를 설정하게 되면, 프리티어의 EC2 메모리가 부족하더라도 swap 메모리로 메꿔 여러 개의 프로세스를 동시에 띄울 수 있게 된다.
EC2 프리티어의 기본 RAM이 1GB이니, 2GB swap 파일을 만들어 할당한다. (128MB * 16)
$ sudo dd if=/dev/zero of=/swapfile bs=128M count=16
$ sudo chmod 600 /swapfile
$ sudo mkswap /swapfile
$ sudo swapon /swapfile
$ sudo swapon -s
$ sudo vi /etc/fstab
/swapfile swap swap defaults 0 0
swap(스왑) 메모리가 뭔데?
스왑 메모리는 실제 메모리 RAM이 가득 찼지만, 더 많은 메모리가 필요할 때 디스크 공간을 이용해 부족한 메모리를 대체할 수 있는 공간을 의미한다. 즉, 하드디스크의 디스크 공간을 메모리처럼 사용하는 가상 메모리 방식이다.
swap 메모리를 사용하는 것이 하드디스크를 이용하는 것이기 때문에 속도면에서는 현저히 떨어지지만, 이는 실제 메모리 RAM이 부족할 때 해결 방법이 된다.
위 명령 및 스왑 메모리에 대한 더 자세한 설명은 아래 레퍼런스 링크를 참고하자.
레퍼런스
반응형