EC2 인스턴스가 자꾸 끊길 때(CPU 사용률이 많을 때) 해결법 : 스왑 메모리 설정

조예빈·2024년 9월 10일
1
post-custom-banner

인스턴스 안에서 Docker를 사용하기 때문에 CPU 사용률이 올라가 자꾸 인스턴스가 끊기는 현상이 발생했고, 이를 해결하고자 스왑 메모리 설정을 해 주었다.

스왑 메모리

  • 시스템의 메모리가 부족할 때 디스크 공간을 사용하여 메모리를 확장하는 기능
  • 일반적으로 RAM이 가득 찼을 때 사용되며, 스왑 공간은 디스크에 위치하므로 RAM보다 느림

스왑 메모리 설정

1. 스왑 파일 생성

sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
  • dd : 데이터 복사 및 변환을 위한 유틸리티
  • if=/dev/zero : input file로 /dev/zero를 지정(/dev/zero는 무한히 0으로 채워진 바이트를 생성하는 특수 파일)
  • of=/swapfile : output file로 /swapfile을 지정. 생성될 스왑 파일의 경로
  • bs=1M : 블록 크기를 1MB로 설정. 1MB 단위로 데이터를 읽고 씀
  • count=1024 : 블록 수를 1024로 설정. 총 1024MB, 즉 1GB의 스왑 파일이 생성됨

=> 스왑 파일은 메모리의 가상 주소 공간을 확장하기 위해 사용되는데, 이 파일이 비어 있다면 시스템이 해당 공간을 사용할 수 없게 되기 때문에 0으로 초기화함. 0으로 초기화하면 시스템은 해당 공간을 '빈 공간'으로 인식하고, 필요한 데이터를 저장할 수 있게 되며, 0으로 초기화된 스왑 파일은 어떤 데이터에도 포함되지 않기 때문에 시스템이 메모리 페이지를 이동하거나 스왑할 때 불필요한 데이터와 혼동하지 않게 됨

2. 파일 권한 설정

sudo chmod 600 /mnt/swapfile
  • /mnt/swapfile의 파일 권한을 설정
  • 600 : 파일 소유자에게 읽기 및 쓰기 권한을 부여하고, 다른 사용자에게는 아무 권한도 주지 않음을 의미
  • 스왑 파일의 보안을 강화하기 위해 필요

3. 스왑 영역으로 설정

sudo mkswap /mnt/swapfile
  • mkswap : 지정된 파일을 스왑 영역으로 초기화
  • /mnt/swapfile을 스왑으로 사용할 수 있도록 설정
  • 이 과정에서 파일의 내용을 스왑 공간으로 사용할 수 있도록 준비

4. 스왑 파일 활성화

sudo swapon /mnt/swapfile
  • swapon : 지정된 스왑 파일을 활성화
  • /mnt/swapfile을 스왑 공간으로 사용하기 시작
  • 이 명령어를 실행한 이후부터 시스템은 해당 스왑 파일을 메모리 부족 시 데이터 저장을 위해 사용할 수 있음

5. 재부팅 시 자동 활성화 설정

sudo vi /etc/fstab

위의 명령어로 fstab을 열어서 아래 코드를 마지막 줄에 추가

/mnt/swapfile swap swap defaults 0 0


스왑 메모리를 설정한 후의 CPU 사용률이 낮아진 것을 알 수 있다.

profile
컴퓨터가 이해하는 코드는 바보도 작성할 수 있다. 사람이 이해하도록 작성하는 프로그래머가 진정한 실력자다. -마틴 파울러
post-custom-banner

0개의 댓글