만약, AWS EC2를 프리티어로 사용하셨던 분 들이라면 한번쯤은 서버가 다운되는 현상을 겪었을 것이라고 생각한다. 필자의 경우도 이런 경우가 자주 일어나서 그럴때마다 서버를 종료시켜주고 켜주고 하는 아주 귀찮은 나날을 보내다가 언제까지 이럴 순 없으니 해결 방법을 찾아 나섰다.
EC2를 프리티어로 사용하게되면 t2.micro를 사용하는 경우가 많은데, 이게 램이 1G 밖에 안되다보니 Spring을 띄우거나 작업을 하다보면 메모리가 부족하여 빌드를 하거나 작업을 하던 도중 EC2가 멈추거나 ssh 접속이 되지 않는데 이 문제를 해결하는 방법은 아래와 같다.
🧐 Swap 메모리 : 실제 메보리보다 더 많은 메모리가 필요할때 디스크 공간을 이용해서 부족했던 메모리 공간을 늘릴 수 있는 공간이다.
당연하지만, Swap메모리는 디스크 공간을 이용해 만들어낸 가상 메모리기 때문에 속도가 상당히 떨어진다는 단점이 있다. 하지만 우리 같이 프리티어 사용자에게는 무료요금을 사용해야하기 때문에(...) 이정도는 감수해주도록 하자.
$ 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
$ sudo free -h
# Swap 메모리 삭제
sudo rm -r swapfile
# 단일 Swap 메모리 비활성화
$ sudo swapoff swapfile
# 모든 Swap 메모리 비활성화
$ sudo swapoff -a
이렇게 하면 디스크를 이용해 메모리를 추가해 줄 수 있다. 속도는 많이 떨어져도 일단 서버가 혼자 기분 상해서 다운되는 상황은 막을 수 있을 것 이다. 프로젝트를 새로 시작할때 해당 세팅은 이제 필수로 가져가려 한다. 다운되는 현상이 한두번이 아니다보니 이것도 나름 서버 구축의 스트레스였는데 해결했다 😂
참고로 해당 예제는 128MB * 16으로 2GB의 Swap 메모리를 생성했는데, 사용하려는 메모리 크기에 맞춰서 만들어주도록 하자 🙇♂️
유익한 자료 감사합니다.