AWS 프리티어 멈춤 현상(메모리 부족할 때)

문제 상황

많은 사람들이 AWS에 대한 공부를 위해 AWS 프리티어를 이용한다. 하지만 내가 느끼기에 프리티어용 서버는 개인 노트북보다도 성능이 떨어지는 정도인 것 같다… 현재 내가 사용중인 프리티어 서버는 t2.micro로 CPU 코어 1개, RAM 1.0GiB 밖에 되지 않는다. 내가 사용중인 맥북에어만 해도 현재 메모리 16GB에 CPU 코어 8개로 굉장히 빠른 개발이 가능했는데 서버에 내 코드를 배포하자마자 갑자기 서버에 연결된 터미널이 멈췄다.

보통 이런 경우 메모리가 문제인 경우가 많다고 한다. 아무래도 1GB 밖에 되지 않으니 가장 확률이 높을 것이다.

AWS 메모리 늘리기

인스턴츠 교체

메모리만 따로 늘리는 것은 불가능한 것 같다. 알아본 결과 EC2는 하나의 서버 인스턴스 자체를 상품으로 팔고 있기 때문에 t2.micro 자체를 더 좋은 인스턴스로 교체해야한다. 하지만 AWS 프리티어를 사용하고 있다는 것 자체가 서버에 돈을 드리기 어려운 상황이라는 뜻이므로 다른 꼼수를 알아보았다,

스왑 메모리

그렇게 알게된 해결 방법이 스왑 메모리다.

스왑 메모리(Swap Memory)는 운영 체제에서 물리적 RAM(Random Access Memory) 용량이 부족할 때 사용하는 디스크의 일부분을 의미한다. 즉, 디스크 일부분을 메모리로 사용하겠다고 선언하면 해당 부분이 스왑 메모리로 작동하는 것이다.

물론 스왑 메모리는 결국 디스크이기 때문에 실제 메모리와는 다르게 굉장히 느릴 수 밖에 없다. 그래도 위 상황에서 에러를 내면서 멈춰버리는 경우는 피할 수 있다,

스왑 메모리 설정하기

  1. 스왑 파일 생성

     sudo dd if=/dev/zero of=/swapMem bs=128M count=16
    
    • dd: 파일을 복사하고 변환하는 유틸리티입니다.
    • if=/dev/zero: /dev/zero는 무한히 0을 생성하는 장치 파일입니다. 이 파일에서 데이터를 읽습니다.
    • of=/swapMem: 새로 만들 스왑 파일의 경로를 지정합니다.
    • bs=128M: 블록 크기를 128MB로 설정합니다.
    • count=16: 총 16개의 블록을 생성하여 총 2GB(128MB * 16)의 스왑 파일을 생성합니다.
  2. 파일 권한 설정

     sudo chmod 600 /swapMem
    

    스왑 파일의 보안을 위해 권한을 설정합니다. 600은 파일 소유자만 읽고 쓸 수 있도록 설정합니다.

  3. 스왑 파일을 스왑 공간으로 설정

     sudo mkswap /swapMem
    

    위 명령어로 생성한 파일을 스왑 공간으로 형식화합니다.

  4. 스왑 활성화

     sudo swapon /swapMem
    

    스왑 파일을 활성화하여 시스템에서 사용할 수 있도록 합니다.

  5. 스왑 상태 확인

     sudo swapon --show
    

    현재 활성화된 스왑 공간을 확인할 수 있습니다.

results matching ""

    No results matching ""