본문 바로가기
Cloud

[AWS] EC2 멈춤, 서버 연결 먹통, CPU 사용률 과부하 해결

by 호강하는 지해 2024. 11. 13.
728x90

 

 

문제

나는 EC2를 프리티어(t2.micro)로 사용하고 있고, 작고 소중한 1GB의 Ram으로 프로그램을 돌리고 있다.

AWS EC2 원격 서버에 DB만 올려놓고 쓸 때는 한 번도 먹통인 적이 없었는데, 프로젝트를 배포하고 나서는 프로그램이 돌아가는 도중 EC2가 멈추거나 ssh 원격 접속이 되지 않는 문제를 겪었었는데, 나는 이런 일이 꽤 자주 일어났었다.

처음에는 렉인가? 했는데 찾아보니 아무래도 작은 램 위에 직접 Spring을 띄우다 보니 작은 용량의 프로그램이더라도 CPU를 꽤 많이 잡아먹었던 모양이다.

CPU 사용률(%)

실제로 CPU 사용률을 보면 100%를 잡아 먹고 있었다..! ㅜㅜ

 

 

 

해결 방법들

1. 인스턴스 재시작하기

그러나 이건 매우 임의적인 방법이다. 나도 처음엔 해결이 된 줄 알고 계속 썼는데 근본적으로 해결해주지 못했고, 계속해서 이 오류를 만났다.

 

 

2. 물리적인 메모리의 용량 늘리기

인스턴스 스펙을 업그레이드 해주는 방법인데 나는 비용을 지불하지 않고 해결해보고 싶었다 !!

 

 

3. swap 메모리를 통해서 하드 용량을 사용해 메모리 확보하기

❓ swap 메모리란?
실제 메보리보다 더 많은 메모리가 필요할때 디스크 공간을 이용해서 부족했던 메모리 공간을 늘릴 수 있는 공간이다.

swap 메모리는 하드 디스크 공간을 이용해 만들어낸 가상의 메모리기 때문에 하드 디스크의 용량은 떨어지며, 속도가 많이 떨어질 수 있다고 한다.
(무료니까 감안해야지 ~~!)

 

 

 

 

swap 메모리를 사용하여 문제 해결

1. swap 메모리 추가

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

프리티어는 1GB 제공인데, 명령어를 통해 2GB 스왑 파일을 생성한다.

sudo 명령어로 권한을 주어야 함으로 앞에 꼭 적어주기

 

2. swap 메모리를 swap 파일로 포맷

$ sudo mkswap /swapfile

스왑 메모리를 스왑 파일로 포맷할 수 있는데, 이게 무슨 말이냐면 물리적인 메모리(RAM)가 부족할 때 임시로 사용할 수 있는 스왑 공간을 디스크에 파일 형태로 만들어 사용할 수 있다는 뜻이다.

일반적으로, 스왑 공간은 디스크의 특정 파티션으로 설정되지만, 스왑 파일을 사용하면 기존 파티션을 수정하지 않고도 스왑 공간을 추가할 수 있어서 변경해주는 것!

 

3. swap 메모리 활성화

$ sudo swapon /swapfile
$ sudo swapon -s

스왑 메모리를 활성화 시킨다.

두 번째 명령어의 출력은 활성화된 스왑 파일의 정보와 크기 등을 나타낸다.

 

4. swap 메모리 시스템이 재시작되더라도 자동 활성화

$ sudo vi /etc/fstab 

# 마지막 행에 추가하기
/swapfile swap swap defaults 0 0

위 명령어를 입력하면 설정 파일이 나올 것이다. 마지막 행에 해당 구문을 추가하고 esc를 누른 후 :wq를 입력해서 저장하고 나온다.

 

이렇게 하면 완성이다 !

 

 

현재 메모리 사용 및 가용 메모리에 대한 정보를 확인하려면

$ sudo free -h

이 명령어를 입력해서 현재 메모리에 관한 정보를 확인해보면 된다.

 

 

 

 

참고할 사항은 스왑 메모리로 2GB로 넓혔다고 해도 프리티어의 사양으로는 또 저런 상황을 만날 수 있고 느려질 수 있다...! 주의하세욤

728x90