[AWS] EC2 스왑 메모리 설정을 통한 메모리 부족 현상 해결

강민수·2024년 1월 14일
2

AWS

목록 보기
1/5
post-thumbnail

1. 왜 메모리 부족 현상이 발생했는가 ?

프리티어 계정으로 실습을 해보다보니 t2.micro 인스턴스를 사용중이었는데 build를 하면 서버가 느려지다가 결국 먹통이 되는 경우가 많이 생겼다.

  • 이때, 아예 터미널 접속도 안되고 연결이 안되서 많이 당황하기도 했다.

인스턴스 유형을 t3.small로 변경해봤지만 jenkins를 사용해서 build를 하기에는 부족해보였다.
(여러 의견에 의하면 프리티어로 젠킨스 구축은 애초에 욕심이라는 말을 해주셨다.. 그런거같기도 하다)
따라서 속도나 용량면에서 메모리가 부족하다면 메모리를 늘리는 것이 맞다고 판단되었다.

2. 해결할 방안

SWAP 메모리 설정

2.1 스왑 메모리란 ?

  • RAM이 부족할 경우가 있기 때문에 HDD의 일정공간을 마치 RAM처럼 사용하는 것이다.
  • 따라서 우린 RAM을 증설한 듯한 효과를 만들 수 있다.

2.2 스왑 공간 크기 계산


일반적으로 위와 같이 스왑 공간을 계산한다.
참고로, 스왑 공간은 절대로 32MB 미만이 되지 않아야 한다.
프리티어의 경우 획득 가능한 RAM이 1GB이므로, 스왑 공간은 2GB로 잡으면 된다.

참고로, 리눅스에서 free -h명령어를 사용해서 메모리를 확인할 수 있기 때문에 살펴보길 권장한다.

3. 해결 방법

sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 # 스왑메모리 할당
  • 128씩 16개의 공간을 만드는 것이기에 프리티어의 경우 count를 16으로 할당하는 것이 좋다.
  • 즉, 2GB 정도 차지하는 것
sudo chmod 600 /swapfile
  • 스왑 파일에 대한 읽기 및 쓰기 권한 ㅜㅂ여
sudo mkswap /swapfile #Linux 스왑 영역 설정
sudo swapon /swapfile #스왑 공간에 스왑파일을 추가해서 파일을 즉시 사용할 수 있게 만듬
sudo swapon -s #절차가 성공적으로 됐는지 확인
sudo vi /etc/fstab #vi 편집기 열고
/swapfile swap swap defaults 0 0 #파일끝에 새로 추가해주고 종료

물론 이렇게 사용한다고 해도 속도가 부족한 부분은 있겠지만 기존의 문제점들은 해결할 수 있다.
애플리케이션 서버 및 Jenkins를 구축해보며 느낀 점은 Jenkins 서버는 애플리케이션 서버와 가능하면 별도로 구성하는게 낫다는 생각이 든다.
빌드 및 실행될 애플리케이션이 많아질수록 하나의 서버만으로는 많이 무거워질 거 같다는 생각이 들기 때문이다.

profile
능동적으로 개발 지식을 찾아다니는 백엔드 개발자입니다 😊 작성된 글에 대한 질문들 및 피드백은 언제나 환영입니다 :) 👌

2개의 댓글

comment-user-thumbnail
2024년 1월 14일

좋은 내용 감사합니다 :)

1개의 답글