EC2 메모리 부족 해결(swap file)

고승원·2023년 3월 18일
0

TIL

목록 보기
9/24

서론

EC2 프리티어를 사용중 CI/CD를 위해 deploy-agent와 docker를 사용하는데 메모리가 부족한 현상이 일어났다.

해결 방법

1. EC2 유형을 업그레이드 한다.

2. swap file

swap file이란 메모리가 부족할 때 디스크 일부분을 메모리에서 사용하는 방법이다.
더 많은 메모리를 사용할 수 있다는 장점이 있지만, 디스크 공간이기 때문에 성능이 저하된다는 단점이 있다.

1. ec2에 접속 후 swapfile에 메모리를 할당한다.

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

dd -> 파일 관련 유닉스 명령어
/dev/zero -> 데이터 스토리지 초기화 관련파일
bs -> 블록 크기 지정
count -> 횟수

이렇게 총 2.1GB의 스왑파일 생성을 한다.

2. swapfile 접근권한 설정

sudo chmod 600 /swapfile

3. 메모리 파티션 설정

sudo swapon /swapfile

/swapfile을 스왑 파티션으로 설정하고, 시스템 메모리 부족 상황에서 /swapfile을 스왑 공간으로 사용할 수 있게 설정한다.

4. swapfile 마운트

/etc/fstab 파일에 한 줄을 추가한다.

/swapfile swap swap defaults 0 0

fstab은 부팅시에 마운트할 파일 시스템과 파티션을 설정하는 파일이다.

/swapfile을 스왑 파티션으로 설정하고, 부팅시 자동으로 마운트하도록 설정한다.

5. 확인하기

free 명령어를 통해 할당된 메모리를 확인할 수 있다.

이렇게 되면 시스템이 메모리 부족 상황에서 스왑 공간으로 사용된다.





주의점

  • 메모리 스왑은 Main Memory가 아닌 디스크를 사용하는 것이기 때문에 애플리케이션의 성능저하가 야기된다. 특히 I/O가 많이 일어나는경우 조심하자.
    • 이로인해 메모리 엑세스가 딜레이되어 애플리케이션이 예기치 않은 지연으로 인해 심각한 문제가 생길 수 있다.
  • 일부 EC2에서 메모리 스왑을 지원하지 않는 경우도 있으니 확인하고 사용하자.

참고


https://kth990303.tistory.com/361

profile
봄은 영어로 스프링

0개의 댓글