Swap 메모리 설정: AWS EC2 메모리 문제
Out of Memory
AWS EC2 서버가 응답을 하지 않아서 콘솔에서 인스턴스 스크린샷을 확인해보니 Out of meory로 서버가 죽어있었다.
메모리가 모두 사용되어 프로세스가 중지 된 현상인데, 일단 인스턴스를 재부팅해서 손상되지 않은 상태로 복원했다. AWS에서는 해당 문제 발생 시, 메모리에 최적화된 인스턴스로의 변경을 권유하고 있다.
https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/TroubleshootingInstances.html#MemoryOOM
상태 확인에 실패한 인스턴스 문제 해결 - Amazon Elastic Compute Cloud
일부 시스템에서는 SELINUX=disabled 파일에서 /mount_point/etc/sysconfig/selinux로 설정함으로써 SELinux를 비활성화합니다. 이 파일에서 mount_point는 복구 인스턴스에서 볼륨을 마운트한 위치입니다.
docs.aws.amazon.com
얼마전에 인스턴스를 업그레이드했기 때문에 메모리 부족이 언제, 무엇 때문에 발생하는지 확인이 필요하다고 생각했고, 그 사이에 서버가 또 메모리부족으로 멈추는 일을 방지하기 위해 리눅스 서버에 Swap 메모리를 할당해주었다.
Swap 메모리란?
Swap 메모리는 실제 메모리 RAM이 가득 찼지만 더 많은 메모리가 필요할때 디스크 공간을 이용하여 부족한 메모리를 대체하는 공간이다. RAM이 부족하다면 중간에 프로세스가 강제로 종료되거나 처리가 굉장히 느려질 수 있는데, 이런 경우에 Swap 메모리를 활용하면 RAM이 부족한 상황을 큰 비용을 들이지 않고 대처할 수 있다. 디스크의 공간을 메모리 처럼 사용하는 가상 메모리의 개념으로, 속도는 기존의 메모리에 비해 현저히 떨어진다.
** 컴퓨터 메모리(RAM)
시스템의 단기 데이터 스토리지로, 정보에 빠르게 액세스할 수 있도록 컴퓨터가 실시간으로 사용하는 정보를 저장한다.
Swap 메모리 확인하기
리눅스에서 free -h 명령어를 사용하면 현재 서버의 메모리와 Swap 메모리 정보를 확인할 수 있다.
Swap 메모리 설정하기
1. swapfile 메모리 할당
$ sudo dd if=/dev/zero of=/swapfile bs=128M count=32
- dd: 파일 복사 및 변환 관련 유닉스 명령 유틸리티
- /dev/zero: 데이터 스토리지 초기화 관련 파일
- bs=128M count=32 으로 총 128 * 32 = 4GB로 swapfile 크기 설정
2. swapfile 접근 권한 설정
$ sudo chmod 600 /swapfile
- chmod 600: 읽기, 쓰기 가능
3. swapfile 추가할 swap 공간 생성
$ sudo mkswap /swapfile
# mkswap -> make swap!
4. swapfile을 swap memory에 추가
$ sudo swapon /swapfile
5. 부팅시 swapfile 활성화 설정 추가
# /etc/fstab 열기
sudo nano /etc/fstab
# 파일의 마지막 줄에 아래 명령어 추가
/swapfile swap swap defaults 0 0
Swap 메모리 제거하기
1. 할당된 스왑 공간을 제거한다.
$ sodu swapoff /swapfile
2. swapfile을 제거한다.
$ sudo rm -rf /swapfile
3. 부팅시 swapfile 활성화 설정을 제거한다.
$ sudo nano /etc/fstab
# 아래의 설정 삭제
/swapfile swap swap defaults 0 0
<참고>
'# Development > DevOps' 카테고리의 다른 글
[Bash] 웹 쉘 스크립트 연습 사이트 (0) | 2025.03.10 |
---|---|
[Unix/Linux] 웹 유닉스 리눅스 명령어 연습 사이트 (0) | 2025.03.10 |
[Ubuntu] 리눅스 메모리 사용량 모니터링: sysstat sar (0) | 2023.11.06 |
[CI/CD] Github Actions로 Python CI 구축하기: Part2-Testing (0) | 2023.10.26 |