kimyu0218
  • [aws] ec2 스왑 공간 할당하기 (OOM)
    2024년 01월 08일 03시 43분 13초에 업로드 된 글입니다.
    작성자: @kimyu0218
    프리티어가 프리티어인 이유는 개복치이기 때문이다 😇

    프리티어를 지원하는 ec2 인스턴스를 생성하고, ssh로 원격 접속하여 도커 컨테이너를 실행하고자 했다. 근데 도커 컨테이너가 곧바로 꺼지는 문제가 발생했다. (황당..) 컨테이너의 exit code는 137로, OOM*으로 인한 종료를 의미했다.

    *OOM : (Out Of Memory) 인스턴스에서 사용할 수 있는 메모리가 모두 소진되어 더 이상 할당할 수 없는 상태

     

    띄워야 하는 도커 컨테이너가 몇갠데!!!

    사양 높은 인스턴스를 쓰기엔 금전적인 수입이 없는 학생(?) 나부랭이라서 프리티어를 포기할 수 없었다. 다행히도 OOM 문제를 겪은 사람이 많아 이에 대한 해결책이 존재했다.
     

    swap이란?

    스왑은 컴퓨터에서 주메모리가 부족할 때 사용할 수 있는 보조 저장 공간이다. 주메모리는 프로그램에 필요한 데이터를 일시적으로 저장하는데, 가끔 시스템이 필요로 하는 메모리 양이 주메모리 용량을 초과하는 경우가 발생한다.
    이런 경우, 주메모리에 저장할 수 없는 데이터를 HDD나 SSD 같은 보조 저장 장치에 저장하여 해결할 수 있다. 이를 스왑 공간이라고 부른다. (일종의 확장 메모리!!)

     

    swap space 만들기

    OOM의 해결책은 바로 스왑 공간이다. 프리티어인 t2.micro의 램은 1G로 아주 사양이 낮다 (ㅎㅎ) 프로그램을 실행하는 데 필요한 메모리가 1G를 초과하기 때문에 스왑 공간을 이용하여 램에 저장할 수 없는 데이터를 스왑 공간에 옮겨둬야 한다.
     
    How to allocate memory to work as swap space
    해당 포스트를 따라하여 스왑 메모리 공간을 할당해주면 된다! 나는 2G만 할당해주었다.


    +) 다크모드 & 언어 변경하기

    aws 콘솔을 이용하다 보면 한국인임에도 불구하고 영어가 그리워진다. 왜냐면 공식 영문서가 정말 잘 되어 있는데 콘솔이 다 한글이라 메뉴 찾는 게 정~말 힘들다.

    우연히 상단의 설정 버튼을 클릭했는데 언어와 다크모드를 적용할 수 있다는 걸 알게 되었다 👍 이제 눈의 피로도 덜고, 메뉴 찾는데 시간을 허비하지 않아도 된다!!

    댓글