TIL

TIL 2024-07-31 EC2, Ubuntu 스왑 메모리

wonow_ 2024. 7. 31. 17:37

 

과제 제출을 위해서 프로젝트 EC2에 배포 후 오늘 접속을 하니 애플리케이션 서버가 꺼져있었다.

그래서 뭘까하고 문제점을 계속 찾았다.

 

내가 서버를 구동하는 상태는 이랬었다.

 

  • EC2 내에 Docker를 설치해서 Docker에 MySQL 설치 후 사용
  • Spring은 Docker가 아닌 EC2에서 사용
  • 환경변수를 파일 형식이 아닌, 일회성 등록 (export)

음,, 일회성 등록은 현재 터미널 세션을 끄면 자동으로 사라지나?

 

하고 파일 형식으로 등록해서 영구적으로 등록했다.

 

그래도 실패

 

그러면 예상가는 것은 딱하나 램이다.

 

EC2를 프리티어로 사용하면 1GB의 램 사용 용량을 제공한다.

 

너무 부족하다 적어도 2GB는 돼야하지 않을까?

근데 2GB를 제공해주는 Small 인스턴스는 프리티어가 아니라서 과제 제출용으로 쓰기엔 부담된다.

 

하지만 스왑 메모리가 있다.

 

스왑 메모리

스왑 메모리를 사용하면 디스크 공간을 가상 메모리 공간으로 사용하여 실제 메모리의 용량보다 많은 양의 메모리를 확보할 수 있다.

하지만, 디스크 공간을 직접 사용하는 것이기에 인스턴스 용량 문제나 속도가 느리다는 것을 감안해야한다.

 

// 스왑 파일 생성
$ sudo dd if=/dev/zero of=/swapfile bs=128M count=32

// 스왑 파일 권한 업데이트
sudo chmod 600 /swapfile

// 스왑 영역 설정
sudo mkswap /swapfile

// 스왑 공간에 스왑 파일 추가
sudo swapon /swapfile

// 부팅 시 스왑 파일 시작을 위한 /etc/fstab 파일 수정
echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab


// 이후 밑의 명령어로 스왑 메모리가 정상적으로 설정되었나 확인 할 수 있다.
$ sudo swapon -s
$ free -h

 

 

보통은 현재 인스턴스 램의 2배 정도로 설정한다고 한다.

 

그리고,,, Docker 말고 MySQL 을 쌩으로 설치하니 이제 서버가 꺼지지 않는다.

 

Docker 이.. 램 먹는 고래..