개요
개발 연습을 할 때 EC2 프리티어 만큼 좋은게 없다.
구글 계정을 만들기는 쉬운데, 구글 계정을 만들 때마다 인스턴스를 하나씩 무료로 쓸 수 있기 때문이다.
그러나 메모리 때문에 아쉬울 때가 종종 있다.
일례로 이전에 리액트 웹 프로젝트를 배포할 때, 리액트를 빌드하지 못하고 서버가 멈춰 원인이 뭔지
엄청 헤맸던 기억이 있다..
이번에도 스프링 부트 프로젝트를 진행하며 gradle을 통해 빌드를 시도했는데, 또 서버가 터져버리고 말았다.
그래서 리눅스의 SWAP 메모리를 통해 문제를 해결해보기로 하자.
일반적으로 SWAP Space는 다음과 같이 권장된다.
물리적 RAM의 양 | 권장 스왑 공간 |
---|---|
RAM 2GB 이하 | RAM 용량의 2배(최소 32MB) |
RAM 2GB 초과, 32GB 미만 | 4GB + (RAM – 2GB) |
RAM 32GB 이상 | RAM 용량의 1배 |
프리티어의 메모리는 1GB이므로, 2GB를 SWAP Space로 잡는다고 생각하면 된다.
해결 방법
우선 EC2 인스턴스 콘솔에 접속한 뒤, 다음 명령어로 swap 메모리를 할당한다.
sudo dd if=/dev/zero of=/swapfile bs=128M count=16
위 명령어대로면 128MB씩 16개, 즉 2GB 가량을 할당하게 된다.
스왑 파일에 대한 읽기 및 쓰기 권한을 준다.
sudo chmod 600 /swapfile
Linux 스왑 스페이스를 설정한다.
sudo mkswap /swapfile
스왑 공간에 스왑 파일을 추가해 스왑 파일을 바로 사용 가능하도록 만든다.
sudo swapon /swapfile
절차가 성공했는지 확인한다.
sudo swapon -s
다음과 같이 나오면 여기까지 성공이다.
/etc/fstab 파일을 편집하여 부팅 시 스왑 파일을 활성화하도록 한다.
sudo vi /etc/fstab
해당 파일의 가장 아래쪽에 다음 내용을 추가하고 저장한다.
/swapfile swap swap defaults 0 0
free 명령어를 통해 적용이 잘 되었는지 확인하자.
free
스왑 스페이스는 HDD에 메모리를 할당하기 때문에, RAM에 비해 조금 느려지지만, 그래도 돌아가는 것에 만족한다면.. 이 방법이 최선이라고 생각한다.
reference
'🛠️TOOL > 🔶AWS' 카테고리의 다른 글
[AWS] - EC2 인스턴스 SSH 접속 시 error : Permission denied (publickey) (1) | 2024.02.14 |
---|---|
[AWS] - EC2에 mongoDB 설치하기 (0) | 2023.09.27 |
[AWS] EC2 인스턴스에 Spring Boot + React 배포 환경 구축하기 (0) | 2023.09.27 |
[AWS] S3 버킷 생성하고 보안 정책 설정하기 (0) | 2023.09.07 |
[AWS] - pem 파일 없이 EC2 인스턴스 SSH로접속하기 (0) | 2023.07.21 |