GDSC EWHA에서 하는 프로젝트가 있는데 요거를 AWS EC2 프리티어에 배포했다가 서버가 뻗어버렸다..
깃 액션으로 배포 잘 된 거 확인하고, postman에서 데이터도 잘 보내주길래 안심하고 기말고사를 보고왔더니 애가 죽어있었다.
하... 인스턴스가 상태 점검 실패인데 최대한 인스턴스를 새로 만들고 싶지 않아서 복구해보고자 한다.
일단 왜 뻗었는지 원인을 찾아보자.
시스템 로그를 확인해보니 아래처럼 메모리 부족이 떴다.
EC2에서 한 거라고는 Spring boot Gradle 빌드한 게 다인데 이렇게 터졌다..
램이 1기가인 프리티어라 많은 걸 바라지는 않지만 auto-scale을 설정하면 금액이 너무 많이 나오기 때문에 그 외의 해결 방법을 찾아보았다.
여기저기 찾아보니 Swap Memory라는 것이 있었다!
Swap Memory는 RAM이 부족할 경우, SSD나 HDD의 공간을 RAM처럼 사용할 수 있는 것이다!
https://help.ubuntu.com/community/SwapFaq#How_much_swap_do_I_need.3F
help.ubuntu.com 사이트를 찾아보니 RAM 용량에 따른 Swap 공간의 최대치를 적어두었다.
내 RAM은 작고 소중한 1GB이기 때문에 2GB를 할당하면 되겠다!
그러면 내 뻗어버린 서버에 Swap Memory를 적용해보자!
저는 Ubuntu 20.04를 사용하고 있습니다
먼저 Swap file에 할당할 용량이 있는지 확인한다.
df -h
용량이 아주 충분하네요.
사용하고 있는 Swap memory가 있는지 확인한다.
free
Swap 부분이 전부 0이네요. 아직 Swap memory가 설정되지 않은 상태입니다.
swapfile로 메모리를 할당할 수 있다.
sudo fallocate -l 2G /swapfile
저는 RAM이 1기가이므로 최대치인 2기가를 swapfile에 할당했습니다.
swapfile의 읽기 쓰기 권한을 업데이트한다.
sudo chmod 600 /swapfile
swap 영역을 설정한다.
sudo mkswap /swapfile
swap 공간에 Swap file을 추가하여 즉시 사용할 수 있도록 만든다.
sudo swapon /swapfile
편집기를 열어준다.
sudo nano /etc/fstab
마지막 줄에 요거를 추가하고 저장한다.
/swapfile swap swap defaults 0 0
free
아까는 다 0이던 부분이 2G로 채워진 것을 볼 수 있따!
그리고 다시 대시보드에 가보면 인스턴스 상태 검사가 통과한 것을 볼 수 있다!!!🥳
빌드만 해도 이렇게 서버가 뻗는데 사용량이 생기면 프리티어로 버틸 수 있을지 걱정이다...
그래도 일단 서버를 살려서 너무 기쁘다!!
도움이 많이 되었습니다!