EC2 프리티어에서 뻗은 서버 살리기 - Swap Memory

off_sujin·2022년 6월 17일
0


GDSC EWHA에서 하는 프로젝트가 있는데 요거를 AWS EC2 프리티어에 배포했다가 서버가 뻗어버렸다..

깃 액션으로 배포 잘 된 거 확인하고, postman에서 데이터도 잘 보내주길래 안심하고 기말고사를 보고왔더니 애가 죽어있었다.

하... 인스턴스가 상태 점검 실패인데 최대한 인스턴스를 새로 만들고 싶지 않아서 복구해보고자 한다.


일단 왜 뻗었는지 원인을 찾아보자.

시스템 로그를 확인해보니 아래처럼 메모리 부족이 떴다.


EC2에서 한 거라고는 Spring boot Gradle 빌드한 게 다인데 이렇게 터졌다..

램이 1기가인 프리티어라 많은 걸 바라지는 않지만 auto-scale을 설정하면 금액이 너무 많이 나오기 때문에 그 외의 해결 방법을 찾아보았다.

여기저기 찾아보니 Swap Memory라는 것이 있었다!

🌵 Swap Memory

Swap Memory는 RAM이 부족할 경우, SSD나 HDD의 공간을 RAM처럼 사용할 수 있는 것이다!

[간략한 사용방식]

  1. Swap Memory를 사용하기 위해서 Swap file을 만들어서 SSD의 일정 부분을 할당한다.
  2. RAM이 부족할 때 활성 상태가 아닌 RAM의 콘텐츠를 Swap file에 페이징할 수 있다.
  3. 그러면 RAM을 확보하여 즉시 사용할 수 있다.

Swap 공간이 얼마나 필요할까?


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를 사용하고 있습니다

1. 하드디스크 용량 확인하기

먼저 Swap file에 할당할 용량이 있는지 확인한다.

df -h

용량이 아주 충분하네요.

2. Swap Memory 확인하기

사용하고 있는 Swap memory가 있는지 확인한다.

free

Swap 부분이 전부 0이네요. 아직 Swap memory가 설정되지 않은 상태입니다.

3. Swap file 생성하기

swapfile로 메모리를 할당할 수 있다.

sudo fallocate -l 2G /swapfile

저는 RAM이 1기가이므로 최대치인 2기가를 swapfile에 할당했습니다.

4. Swap file 권한 수정하기

swapfile의 읽기 쓰기 권한을 업데이트한다.

sudo chmod 600 /swapfile

5. Swap file 적용하기

swap 영역을 설정한다.

sudo mkswap /swapfile

swap 공간에 Swap file을 추가하여 즉시 사용할 수 있도록 만든다.

sudo swapon /swapfile

6. 부팅 시 Swap file 활성화하기

편집기를 열어준다.

sudo nano /etc/fstab

마지막 줄에 요거를 추가하고 저장한다.

/swapfile swap swap defaults 0 0

7. 잘 할당되었나~ 확인!

free


아까는 다 0이던 부분이 2G로 채워진 것을 볼 수 있따!


그리고 다시 대시보드에 가보면 인스턴스 상태 검사가 통과한 것을 볼 수 있다!!!🥳

빌드만 해도 이렇게 서버가 뻗는데 사용량이 생기면 프리티어로 버틸 수 있을지 걱정이다...
그래도 일단 서버를 살려서 너무 기쁘다!!

profile
학습 중..

0개의 댓글