본문 바로가기
AWS/이슈 관련

EC2 프리티어 free tier 서버 다운, cpu100% 해결법 Swap Memory

by 하니__ 2024. 5. 3.

 
AWS에서 FreeTier를 이용하여
서버를 돌리기 위해 EC2를 사용하다보면,
 
 
데이터가 큰 모델을 사용한다면
 
 
겪게되는 문제가 있다
 
과도한 CPU의 사용으로 인한 서버다운
 
 
EC2 FreeTier의 문제점이 무엇인가
 

무료로 서버를 제공하는 아주 고마운 서비스
하지만 아쉬운건
 
제공하는것이 저 t2.micro인데
 
 

 
freetier에 빌려주는 메모리가 1기가 남짓 이라는것
 

 
대충 과자 1개값 정도의 메모리라고 생각하면 되겠다
 
아무튼 이런 수준의 메모리를 사용하고 있어서
 
좀 무거운 모델을 돌린다 하면
 

이래야 정상인 CPU 사용률이
 

이렇게 비 이상적인 모습으로 치솟고 서버가 먹통이 되고 바로 죽어버린다
 
이렇게 되어버리면 일단 아마존의 EC2서비스에 들어가서 
 

인스턴스 재부팅을 해보고 기다렸다가 다시 PuTTy로 서버를 다시 오픈하고
포트 설정 되어있던 녀석들도 전부 재설정 해줘야 한다
 
 
첫번째는 긴가민가 했지만
한번 더 바로 서버가 죽는 모습을 경험하고 확신했다
 
무조건 작은 메모리가 부담되어 서버가 터진거라는것을
 
그럴때 사용할 수 있는게 있다고 이미 알고 있었기에 해당 방법을 바로 찾을 수 있었다
 
내가 사용하고 있는 디스크를 가상의 메모리로 잠시 사용할수 있게하는 법이다
 

Swap메모리

실제 메모리보다 더 많은 메모리가 필요할때
디스크 공간을 잠깐 빌려 부족한 메모리를 대신하는 기능

 
어쩌면 당연하게도 Swap메모리는 디스크 공간을 이용해 만들어낸
진짜 메모리가 아닌 가상 메모리기 때문에 속도가 상당히 떨어진다
 
 
하지만,
애초에 프리티어에서 프리로 사용하기때문에 생기는 일이니까
견디자
 
 
꼬우면...알고있지 않은가
사실 결제하면 그만인 문제다
 
 
아래의 방법대로 따라하며 코드는 한 줄씩 입력하자
 

우선 PuTTy에 ec2-user 로 로그인하여 접속 한 뒤
1. swapfile을 생성하자

 

$ sudo dd if=/dev/zero of=/swapfile bs=128M count=16
$ sudo chmod 600 /swapfile

 
슈퍼방장과도 같은 sudo로 명령을 해주자
dd라는 데이터를 변환하거나 복사하는 명령을
if= 인풋 파일 지정하는 옵션 /dev/zero는 무한한 0으로 채워진 가상 파일
of=/swapfile 아웃풋 파일 지정 옵션 스왑 파일의 경로를 나타낸다
bs=128M 한 번에 읽거나 쓸 데이터 블록의 크기를 지정하는 옵션, 128MB로 설정하고
count=16 입력 파일에서 복사할 블록 수를 지정하는 옵션으로 총 16개의 128MB 블록을 생성하여
 
128MB * 16 = 2048mb 즉, 총 2GB의 메모리를 스왑 파일을 생성했다
 
sudo chmod 600 /swapfile 생성된 스왑 파일에 권한 설정 명령이며, 해당 파일을 소유한 사용자만 읽고 쓸 수 있도록 한다
 

2. Swapfile 공간 설정
$ sudo mkswap /swapfile

mkswap  스왑 파일을 스왑 공간으로 만들어주는 명령어
/swapfile은 위에서 생선한 스왑 파일의 경로
 
 
 

3. Swap 상태 활성화 및 확인
$ sudo swapon /swapfile
$ sudo swapon -s

 
sudo swapon /swapfile 스왑 파일을 활성화
sudo swapon -s 활성화된 스왑 상태를 확인
 
 
 

4. 자동 활성화
$ sudo nano /etc/fstab
/swapfile swap swap defaults 0 0

/etc/fstab 파일을 nano 라는 텍스트 편집기로 열고
아래의 텍스트 추가
 
그 후 CTRL + O
엔터
CTRL + X
 
를 하면 저장후에 나가기를 할 수 있다
만약 저장이 잘 됐는지를 확인 하고 싶드면 위의
sudo nano~ 를 다시 입력해보자
 

저장이 잘 되어있는 모습을 확인 가능하다
 
적혀있는것의 뜻은 아래와 같다
 
 
/ swapfile 은 알다시피 경로
swap 파일 시스템 유형 지정/ 여기서는 스왑 영역의 의미
swap 파일 시스템 지정/ 스왑 파일의 경우 swap로 설정
defaults 파일 시스템의 마운트 옵션 지정 기본값인 defaults사용 일반적으로 읽기/쓰기 권한 활성화
0 0 덤프와 파일 시스템 검사 순서를 지정 스왑 파일의 경우 이 값들은 보통 0으로 설정
 
즉,
부팅 시 스왑 파일이 자동으로 활성화되도록 설정
수정한 후 시스템을 재부팅하면 스왑 파일이 자동으로 활성화된다
 
 
 
 
여기까지만 하면 끝
 
이지만
 
정상적으로 됐는지 확인을 해보자
 

5. 메모리확인
$ sudo free -h

 
리눅스의 메모리 사용량을 확인하는 명령
시스템의 메모리와 스왑에 대한 정보가 표시되며
-h 옵션은 사람이 읽기 쉽도록 단위를 KB, MB 로 표시됨
 


 
 

6. 기타
위에서 만든 Swap 메모리 삭제
sudo rm -r swapfile

위에서 만든 Swap 메모리 비활성화
$ sudo swapoff swapfile

모든 Swap 메모리 비활성화
$ sudo swapoff -a

위에서도 적었지만 활성화된 모든 Swap 메모리 확인
$ sudo swapon -s


비활성화 해둔 Swap 메모리를 확인할때
cat /proc/swaps

cat은 파이썬의 print와 같다고 생각하면 된다
모든 스왑 공간에 대한 정보를 제공하기때문에
활성화,비활성화된 모든것을 보여준다

 
 
 
 
이렇게 하여 조금 느리긴 하지만 서버가 죽지않게 조치를 취했으니
더이상 서버가 다운 되는 일이 없기를 바란다

'AWS > 이슈 관련' 카테고리의 다른 글

AWS - Lambda 500에러  (1) 2024.05.31
AWS 프리티어 환불받는 법  (0) 2024.05.09
AWS 프리티어 계정정지 복구법  (0) 2024.05.09