포스트

Ec2 프리티어 Swap 메모리 적용

EC2 프리티어 t2 인스턴스에서 airflow를 활용한 개인프로젝트를 진행하는데 메모리 문제로 죽는 현상이 있었다. 이를 swap memory로 해결한 경험이다.

발단

나의 귀여운 인스턴스 하나가 있다.

사양은 다음과 같다.

  • vCPU = 1
  • RAM(GiB) = 1

너무 작아서 그런지 실행시 인스턴스가 계속 먹통이 됐다. 인스턴스 중단 - 실행 을 반복해야하는 열받는 상황이었다. airflow config의 설정에서 auto-reload, num_process, thread 등 여러 옵션들을 조절하였으나 그래도 나아지지 않았다. (물론 해당 옵션들은 스왑 메모리를 써도 필요하다)

요구사항

내가 하고자 한 프로젝트는 다음 구조이다.

가동 프로세스

  • Airflow scheduler
  • Airflow web server
  • FastAPI backend server

총 3개의 파일을 실행하며 프로세스는 Dagfile 추적 프로세스까지 총 4개이다. t2.micro 인스턴스는 스스로의 힘으로 위 프로세스들을 구동할 수 없었다.

top 찍어보면 다음과 같다.

free memory가 94로 거의 다 떨어졌고 지정한 2기가 swap 메모리를 추가로 사용한 것을 볼 수 있다.

Swap Memory 설정 방법

RAM말고 SSD/HDD 용량을 이용해 부족한 메모리를 대체하는 swap을 설정해 SSD/HDD 공간을 RAM처럼 써보자

swap 메모리 할당

  • swap memory를 할당하기 전/후에 free 명령어로 확인한다

  • swap 파일을 생성한다.
    • sudo fallocate -l 2g /swapfile
    • 크기는 다음을 참조한다 (ram 1기가니까 2기가 설정)
      • [참조] (https://help.ubuntu.com/community/SwapFaq#How_much_swap_do_I_need.3F)
    • ec2 t2.micro 타입이라도 저장 용량은 넉넉하게 설정할 수 있다.
      • 나의 경우 25GiB였다
  • swapfile을 읽고 쓸 수 있게 권한 수정한다
    • sudo chmod 600 /swapfile
  • swapfile 적용하기
    • swap 영역을 설정한다
      • sudo mkswap /swapfile
    • swap 영역에 swapfile을 추가해 사용가능하게 만든다
      • sudo swapon /swapfile
  • 부팅 시 swapfile 활성화
    • sudo vi /etc/fstab 을 통해 파일 open
    • 마지막에 다음 내용 추가
      • /swapfile swap swap defaults 0 0
  • free로 확인
    • 

      다시 시도

  • swap memory를 적용한 이후 나의 airflow 프로세스들은 정상적으로 가동됐다!
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.