Updated:

ASAP 개인 프로젝트를 진행하면서 만난 이슈 중 하나인
AWS EC2 프리티어에서 메모리 부족 오류에 대해 포스팅 해보려고 한다.

최종적으로 필자가 EC2 프리티어 인스턴스에 구축한 환경은 다음과 같다.
결론부터 말씀드리자면 메모리 1GB인 EC2 프리티어에서는 젠킨스, 서비스 2개, nginx 를 절대 돌릴 수 없다.
infra

1. 메모리 이슈 발견

nginx를 통해서 서비스 2개를 스위칭하는 무중단 배포 구성을 끝낸 후
젠킨스를 설치하고나서부터 이상함을 직감했다.
서버가 느려지기 시작한것이다.
아예 먹통이 되버릴때도 있어서 중간중간 인스턴스를 재시작해야 됐었다.

설치가 잘못됐나 하고 지웠다가 재설치하는 삽질을 반복하다가
뒤늦게 메모리 문제인 것을 인지했다.

서둘러 구글링을 통해 확인해봤지만 프리티어라 별 수 없다는 얘기들이 많았는데
문득 뇌리를 스쳐지나가는게 스왑 메모리여서 관련 키워드로 검색해보니 역시나 방법이 있었다.

스왑(SWAP) 메모리란
RAM 공간이 부족할 경우 HDD의 일정 공간을 RAM 처럼 사용하는 것을 말한다.

프리티어로 가질 수 있는 최대 HDD 용량이 30GB인데, 이걸 최대한 활용하면 RAM을 몇 배로 늘릴 수 있는거 아닐까 싶었지만
아래처럼 나름의 룰이 있는 모양이다.
swap

2. 메모리 이슈 해결 방법

하여 스왑 메모리를 2GB 정도 잡아주기로 했다.
순서대로 따라만 하면 된다.

  1. dd 명령어를 통해 swap 메모리를 할당한다. 128씩 16개의 공간을 만드는 것이여서 우리의 경우 count를 16으로 할당하는 것이 좋다. 즉, 2GB정도 차지하는 것이다.
    $ sudo dd if=/dev/zero of=/swapfile bs=128M count=16
    
  2. 스왑 파일에 대한 읽기 및 쓰기 권한을 업데이트한다
    $ sudo chmod 600 /swapfile
    
  3. Linux 스왑 영역을 설정한다
    $ sudo mkswap /swapfile
    
  4. 스왑 공간에 스왑 파일을 추가하여 스왑 파일을 즉시 사용할 수 있도록 만든다
    $ sudo swapon /swapfile
    
  5. 절차가 성공했는지 확인한다
    $ sudo swapon -s
    
  6. /etc/fstab 파일을 편집하여 부팅 시 스왑 파일을 활성화한다. 편집기에서 파일을 연다
    $ sudo vi /etc/fstab
    
  7. 파일 끝에 다음 줄을 새로 추가하고 파일을 저장한 다음 종료한다
    /swapfile swap swap defaults 0 0
    
  8. 스왑 메모리가 만들어졌는지 메모리를 체크한다
    $ free -h
    

    putty

Leave a comment