ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [AWS] EC2 인스턴스 행(hang) 현상 & 스왑메모리 할당
    IT/삽질 2024. 1. 4. 23:28

    출처 : unsplash.com

     

     

    아.. 정말 하루 종일 삽질했다..

    AWS 프리티어 요금제 가입해서 테스트 용도의 인스턴스를 생성해서 사용 중이다.

     

    요즘 서버 인프라 자동 구성을 위해 오픈소스인 rundeck 을 알아보기 위해서 서버에 설치해봤다.

     

    로컬 PC에서 ssh 로 ec2 서버로 접속해서 사용하는데..

    rundeck 서비스를 기동하니까 갑자기 버벅 거린다.

     

    어라?? 

     

    그리고 행 걸린듯 먹통이다.

    ssh 접속을 종료하고 다시 들어가봐도 행 걸려 있기는 마찬가지다.

     

    우와.. 미치겠다..

    결국은 ec2 대시보드로 가서 인스턴스를 '중지' 후 다시 '시작' 했다.

    접속이 되자마자 바로 top 명령어를 날려보니 rundeck 이 cpu 를 엄청 잡아 먹고 있다...;;

     

     

    얼릉 kill -9 를 날리고 프로세스를 죽이니.. 다시 cpu는 평온해졌다...;;

     

    아니.. 이넘의 오픈소스 사양이 어떻길래...

     

    출처: https://aws.amazon.com/ko/ec2/instance-types/t2/

     

    내가 사용하고 있는 t2.micro 는... 1 vCPU... 1GB RAM 인데...

     

    출처: https://docs.rundeck.com/rundeck-cloud/administration/install/system-requirements.html

     

    이넘의 rundeck 은 2 CPU 에 4GM RAM 을 요구사항을 가지고 있드라... 이러니 당연히 뻗어버리지... ㅠㅠ

    그리고 m3.medium 이상을 얘기하네...

     

    하지말자... ㅠㅠ

     

     

     

     

    생각해보니 윈도우에서 가상메모리 설정해서 부족한 물리 메모리 영역을 확보할 수 있었는데.

    리눅스에도 그런 기능이 있다. 바로 스왑메모리인데.

    아까 top 으로 봤을 때 메모리는 절반 정도 사용했지만.

    권장이 4GB 이다 보니 CPU 로 부하가 가서 피크치지 않았나 싶어 스왑메모리를 설정해보기로 했다.

     

    메모리 사용현황을 알아보려면 free 명령어로 확인 가능하다.

     

    t2.micro 에서 할당받은 1GB가 Mem 영역에 노출되어 있고, 스왑메모리는 할당하지 않았기 때문에 Swap 영역은 0 으로 보인다.

     

    이제 아래 순서대로 작업을 진행 하면 된다.

     

    1. 스왑 파일 생성
    2. 스왑 파일 권한 설정
    3. 스왑 영역 설정
    4. 스왑 영역 활성화/비활성화

     

    스왑 파일 생성

    sudo fallocate -l 2G /swapfile

     

    스왑 파일 권한 설정

    - 스왑 파일 생성하면 기본적으로 644 권한으로 생성이 되는데, '스왑 영역 설정' 시 mkswap 명령어 수행하면 안전하지 않다는 오류가 나온다.

    더보기

    /* 기본 swapfile 정보 */

    -rw-r--r--. 1 root root 2147483648 Jan  4 23:41 /swapfile

    /* mkswap 명령어 수행 시 아래와 같이 가이드를 준다. */

    insecure permissions 0644, fix with: chmod 0600 /swapfile

    - 따라서 사전에 권한을 600 으로 변경한다.

    sudo chmod 600 /swapfile

     

    스왑 영역 설정

    - mkswap 명령어는 지정한 파일이나 공간에 스왑 공간을 설정하도록 하는 명령어이다.

    sudo mkswap /swapfile

     

    스왑 영역 활성화/비활성화

    - 활성화는 swapon 명령어로, 비활성화는 swapoff 명령어로 수행한다.

    sudo swapon /swapfile
    sudo swapoff /swapfile

     

     

    스왑을 설정하고 메모리 정보를 보면 2GB 로 할당된 것을 확인할 수 있다.

     

     

    자. 이제 다시 rundeck 을 기동하고 top 으로 보자.

     

    어?? 어??

     

     

    또 CPU 가 폭발하려고 한다.... 죽여여 하나... ㅠㅠ

     

    그런데... 수치가 줄어든다... 오...

     

    대박 !! 살았다!!!

     

    얼릉 rundeck 웹 콘솔에 접속해본다!!!

    음... 뜨긴 하는데... 에러를 뱉네....

    다른 에러지만... 서비스가 떴다!! ㅋㅋㅋ

     

    뭐... 이건 또 다른 문제니까... 일단 서비스 정상 수행한 걸 위안 삼자^^

     

     

     

    참고

    https://velog.io/@wndbsgkr/EC2에서-메모리가-부족할-땐-가상-메모리-기법을

     

    EC2에서 메모리가 부족할 땐 가상 메모리 기법을?

    현재 AWS EC2의 t2.micro 인스턴스 유형을 쓰고 있다 보니 빌드하다 보면 너무 느려져서 먹통이 되는 경우가 많다.인스턴스 유형을 더 좋은 걸로 변경해도 되지만 그만큼 돈이니 디스크에 충분한 여

    velog.io

     

    댓글

Designed by Tistory.