이것저것 적어보는 블로그

AWS EC2 가상메모리 설정 본문

개발&코딩

AWS EC2 가상메모리 설정

dona0408 2023. 7. 4. 01:29
반응형

AWS 프리티어의 경우 사진과 같이 사양이 매우 제한적이다. 특히 메모리!!

mysql을 설치하고 DB에 데이터를 집어넣고 어느 정도 세팅을 끝내고 테스트를 하는데 서버가 자꾸 뻗는 현상이 발생했다.

그럴 때마다 AWS 콘솔 가서 인스턴스 중지 될 때까지 기다렸다가 다시 켜주고… 굉장히 번거로웠다.

쿼리문 하나 잘못 날려서 대량 검색하면 뻗고 뭐 하다 뻗고… 부팅 직후인데도 메모리 사용량이 80%에 달해서 htop으로 확인해 보니 mysql이 어마어마하게 잡아먹고 있었다.

안 그래도 1기가라는 적은 메모리인데 절반을 잡아먹다니;;

이럴 때 필요한 구원투수가 바로 Memory Swap이다.

디스크의 공간을 가상의 메모리로 사용하여 메모리가 부족한 걸 해결하는 방법이다.

 

1. 스왑 파일 설정

dd 명령을 사용하여 루트 파일 시스템에 스왑 파일을 생성

명령에서 bs는 블록 크기이고 count는 블록 수로 스왑 파일의 크기는 블록 크기 * 블록 수

지정한 블록 크기는 인스턴스에서 사용 가능한 메모리보다 작아야하고 그렇지 않으면 "memory exhausted" 오류가 발생한다.

블록 크기 및 수는 사람마다 다르게 설정하는데, 찾아보니 상당수가 블록 사이즈는 128M으로 하는 거 같아 따라 했다.

시스템이나 메모리 스왑이 어떤식으로 이뤄져야 하는지에 따라 블록 사이즈와 수가 변동될 수 있으므로 해당 부분에 대해 고민해 보고 결정하는 것도 좋은 방법이다.

sudo dd if=/dev/zero of=/swapfile bs=128M count=16 → 128M * 16 = 2GB

 

2. swapfile에 접근할 수 있는 권한을 설정

읽기, 쓰기가 가능하도록 chmod 600으로 설정 (r w -,- - -, - - -)

sudo chmod 600 /swapfile


3. mkswap 명령어로 swapfile을 추가할 swap 공간을 생성

sudo mkswap /swapfile


4. swapon 명령어를 통해 swapfile을 swap memory에 추가

sudo swapon /swapfile


5. 정상적으로 등록이 되었는지 확인

sudo swapon -s


6. /etc/fstab에 세팅

vi를 써도 되고 nano를 써도 되고 편한 편집기 아무거나 쓰면 된다. 나는 vi로 진행했다.

sudo vi /etc/fstab

/swapfile swap swap defaults 0 0

vi에서 방향키로 맨 뒤로 이동해서 i키 / a키 를 눌러 편집모드로 전환 후 아래 내용을 적고 저장하면 된다.

조금 더 빠르게 하는 방법으로는 vi로 파일 열고 } 로 문단의 끝으로 이동, a로 편집모드 전환, 엔터 후 복붙, ESC 한번 누르고 : 누르고 wq! 엔터

vi편집기의 자세한 사용법이나 명령어는 여기를 참고하자

https://blockdmask.tistory.com/25

https://jhnyang.tistory.com/54

Swap Memory 설정 후 모습으로 확실히 쾌적한게 느껴진다. 메모리가 터져서 서버가 뻗는 일도 없어졌고…

이로써 문제 해결!

이 문제를 해결하며 참고했던 사이트

https://hjjooace.tistory.com/entry/AWS-EC2-멈춤-현상-CPU-Network이슈

https://kth990303.tistory.com/361

https://ms3864.tistory.com/398

반응형
Comments