실전 프로젝트를 진행하던 중 점점 코드량이 늘어나고, 프론트에서 API 요청 횟수가 늘어감에 따라 개발중이던 코드에서 에러도 여럿 발생하면서 서버가 터지는 일이 빈번하게 발생하기 시작했다.
처음엔 EC2를 중지시켰다가 다시 시작하고 했는데, 서버가 터지는 횟수가 늘어나기 시작했고 그 간격도 짧아지기 시작했다.
또, EC2를 다시 시작하는 경우 포트포워딩(80 -> 8080)을 매번 다시 해주어야 했기에 여간 번거로운게 아니었다.
(잠을 자다가도 서버가 터졌다는 연락이오면 비몽사몽한 상태로 서버를 재가동 시켜야 했다...)
현재는 수익성을 목표로 한 프로젝트가 아니기에 프리티어를 사용중인데, 구글링을 해보니 프리티어의 1GB 메모리로는 감당이 안되는 경우 CPU 사용률이 급격하게 증가해 서버가 퍼지는 터져버리는 일이 종종 있다고 한다...
스왑 메모리란, 실제 메모리 Ram이 가득 찼지만 더 많은 메모리가 필요할 때 디스크 공간을 이용하여 부족한 메모리를 대체할 수 있는 공간을 의미한다.
실제 디스크 공간을 메모리처럼 사용하는 개념이기 때문에 가상 메모리라고 할 수 있다.
AWS 공식 사이트에서는 EC2 인스턴스에서 스왑 공간으로 사용할 메모리를 할당하는 방법을 안내해주고 있다.
dd 명령을 사용하여 루트 파일 시스템에 스왑 파일을 생성한다.
bs는 블록 크기이고 count는 블록 수, 스왑 파일의 크기는 dd 명령의 블록 크기 옵션에 블록 수 옵션을 곱한 값이다. 이러한 값을 조정하여 원하는 스왑 파일 크기를 결정한다.(나의 경우 디스크 4GB를 할당해 주었다.)
$ sudo dd if=/dev/zero of=/swapfile bs=128M count=32
$ sudo chmod 600 /swapfile
$ sudo mkswap /swapfile
$ sudo swapon /swapfile
$ sudo swapon -s
// 편집기에서 파일을 열어준다.
$ sudo vi /etc/fstab
// 파일 끝에 아래의 내용을 추가하고 파일을 저장한다.(/포함)
/swapfile swap swap defaults 0 0
$ free -m
명령어를 입력하면 Swap: 4095
을 확인할 수 있다!
부디 이것으로 서버가 터지는 일이 더이상 발생하지 않기만을 바래본다...🥹
📚참고자료
AWS 공식사이트