가상 메모리 기법을 이용해 AWS EC2에서 메모리 부족현상 해결하기

일단 해볼게·2023년 11월 21일
0

CS

목록 보기
10/10

AWS t2.small을 사용하던 도중 메모리 부족 현상을 발견했다.

인스턴스 유형을 더 좋은 걸로 변경해도 되지만 그만큼 돈이니 디스크에 충분한 여유 공간이 남는다면 가상 메모리를 활용해서 메모리 부족 현상을 해결할 수 있다.

하지만 이것 역시 하드디스크의 일부를 쓰는 것이기 때문에 한계가 있어 계속해서 메모리가 부족하다면 메모리를 늘리는 것이 맞다.

가상 메모리? 스왑 공간?

가상 메모리 : 메모리 관리 기법 중 하나이며 디스크RAM의 확장처럼 사용

스왑 공간 : 디스크에서 사용되는 공간

스왑 공간은 어떻게 계산할까?

AWS에서 권장하는 스왑 용량으로 설정했다. EC2 t2.small의 램은 2GB라서 스왑 메모리도 2GB로 계획했다.

해결 방법

시스템 메모리 현황 확인

free -h -t

-h : 사람이 읽기 편하게 출력한다.

-t : total ram, swap 메모리를 확인한다.

자세한 옵션은 free --help를 통해 확인할 수 있다.

  • Mem : 시스템의 물리적인 메모리에 대한 사용량을 각 필드로 표시
  • Swap : 스왑이라는 특정 메모리영역에 대한 사용량을 각 필드로 표시
  • total : 전체 메모리의 용량을 Kbyte단위(기본단위)로 표시
  • used : 현재 시스템에서 사용중인 메모리의 양을 Kbyte 단위로 표시
  • free : 현재 시스템에서 사용하지 않는 메모리의 양을 Kbyte로 표시
  • shared : 현재 시스템에서 공유한 메모리의 용량을 표시
  • buff/cache : 현재 캐시메모리에서 버퍼링된 사용량을 표시
  • available : swapping 없이 새로운 프로세스에서 할당 가능한 메모리의 예상 크기. (예전의 -/+ buffers/cache이 사라지고 새로 생긴 컬럼)

swap 메모리 할당

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

128씩 16개의 공간을 만드는 것이여서 우리의 경우 count를 16으로 할당하는 것이 좋다. 즉, 2GB정도 차지하는 것이다.

스왑 파일에 대한 읽기, 쓰기 권한 업데이트

sudo chmod 600 /swapfile

Linux 스왑 영역 설정

sudo mkswap /swapfile

스왑 공간에 스왑 파일을 추가하여 스왑 파일을 즉시 사용할 수 있도록 만들기

sudo swapon /swapfile

swap 설정 확인

sudo swapon -s

부팅 시 스왑 파일을 활성화

sudo vi /etc/fstab

파일 끝에 코드를 추가하고 파일을 저장한다음 종료한다.

/swapfile swap swap defaults 0 0

완료

free -h -t 명령어로 확인해본다.

스왑 메모리가 생긴걸 알 수 있다.

스왑 메모리 중지 & 시작

중지

sudo swapoff -a

시작

sudo swapon -a

시작, 중지 명령어로 스왑메모리 전 후 상황을 테스트 할 수 있다.

참고

https://sundries-in-myidea.tistory.com/102

https://ssue-dev.tistory.com/entry/Linux-Swap-Memory-스왑-메모리-설정-방법

profile
시도하고 More Do하는 백엔드 개발자입니다.

0개의 댓글