대부분의 많은 분들이, 프로젝트 초반 구축에 있어서 AWS EC2 프리티어를 사용합니다.
프리티어의 인스턴스는 t2.micro 타입이며, 램이 1GB 유형을 갖고 있기 때문에
EC2 인스턴스에서 서버 하나를 띄우고, AWS RDS 사용 대신에 데이터베이스 서버까지 함께 EC2에 띄운다면
메모리 부족 현상이 발생할 수 있습니다.
메모리 부족 현상으로 인해 서버가 다운되거나 인스턴스가 다운될 수 있습니다.
프로젝트 초반 운영에서는 한정적인 자원으로 운영할 필요가 있기 때문에, 프리티어를 포기하기도 리소스적으로 애매합니다.
이럴 땐 swap memory 할당을 활용하면 됩니다.
EC2의 디스크 용량을 이용해서 부족한 메모리를 대체하는 공간을 swap memory 라고 합니다.
이번 글에서는 리눅스에서 swap file을 생성하여 swap memory를 할당하는 방법을 설명드리겠습니다.
1. EC2 인스턴스에 접속
먼저 ssh 를 통해 인스턴스에 접속합니다.
보통 다음과 같은 명령어로 인스턴스에 접속합니다.
ssh -i {xxx.pem} {접속 주소}
참고로 저는 매번 이렇게 접속하는게 다소 불편하다고 생각되어서, 쉘 스크립트를 작성해서 접속합니다.
접속 파일명을 login.sh로 두자면
vi login.sh
를 이용해서 vi 에디터를 열어준 뒤에 아래와 같이 작성해줍니다.
#!/bin/bash
ssh -i {xxx.pem} {접속 주소}
이렇게 작성해주면, 다음부터 서버에 접속할 때 아래 명령어 한 번이면 됩니다.
./login.sh
2. swap memory 할당
sudo dd if=/dev/zero of=/swapfile bs=128M count=16
dd는 파일 복사 및 변환 관련 유틸리티입니다.
보통 swap memory는 할당된 메모리의 2배 이상을 권장하고 있기 때문에,
제 메모리는 1GB 이므로 2GB를 할당하게 됩니다.
(128M x 16)
3. swap file에 접근 권한 설정
sudo chmod 600 /swapfile
4. mkswap을 통해 swapfile을 추가할 swap 공간 생성
sudo mkswap /swapfile
5. swapon 을 통해 swapfile을 swap memory에 추가
sudo swapon /swapfile
6. 파일 시스템 정보 저장 (마운트)
sudo vi /etc/fstab
# 맨 아래에 작성
/swapfile swap swap defaults 0 0
etc/fstab은 파일시스템 정보를 저장하는 곳으로, 파티션 변경과 디스크 추가 시 이 파일에 등록해야 마운트가 됩니다.
7. 등록 확인
free
우테코 선배님들이 알려주셨다 !
추가 참고 자료
- 공식 문서
- 블로그
'[AWS]' 카테고리의 다른 글
Spring Scheduled가 EC2 에서 시차가 생길 때 (0) | 2024.11.02 |
---|---|
AWS 불완전한 멀티파트 업로드 용량 관리하기 (0) | 2024.06.18 |
[AWS] WAF는 자비가 없다. (0) | 2022.07.11 |
[AWS] WAF란? - WAF 설정 (0) | 2022.07.10 |
[AWS] 예산 설정 (AWS budget limit) (0) | 2022.07.10 |