인스턴스 안에서 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 사용률이 낮아진 것을 알 수 있다.