반응형
문제 상황
Github Actions 로 jar 파일을 EC2 에 성공적으로 deploy 되었는데
EC2 터미널에서 무언가 작업을 하려고 보니 작동이 되지 않고 커서가 말썽이었다.
인스턴스 재실행, jar 파일 재 deploy 를 해봐도 똑같은 상황..
서버가 계속 뻗어버리는게 이상해 AWS Cloudwatch 를 들어가서 확인을 해보았는데
CPU 사용량이 최고를 찍고 있었다.
관련해서 찾아보니
AWS EC2 프리티어는 RAM 을 1GB 밖에 지원하지 않기 때문에 규모가 큰 프로젝트를 올리면 이를 감당하지 못하고 뻗어버리는 것이었다.
해결하기 위해선 리눅스의 Swap 기능을 사용해야 한다.
해결
Swap 이란
swap 은 시스템에 메모리가 부족할 경우에 하드 디스크의 일부 공간을 RAM 처럼 사용할 수 있게 하여 RAM 용량 부족으로 인한 시스템 에러를 사전에 방지하게 하는 것이다.
1. 스왑 파일 생성
sudo dd if=/dev/zero of=/swapfile bs=128M count=32
128m X 32 = 4GB
정도로 설정해준다.
2. 스왑 파일 읽기 쓰기 권한 수정
sudo chmod 600 /swapfile
3. 리눅스 스왑 영역 설정
sudo mkswap /swapfile
4. 스왑 공간에 스왑 파일을 추가하여 스왑 파일을 즉시 사용할 수 있도록 설정
sudo swapon /swapfile
5. /etc/fstab 파일을 수정하여 부팅 시 스왑 파일 실행
sudo vi /etc/fstab
6. 파일 맨 끝에 다음 줄 추가
/swapfile swap swap defaults 0 0
까지 하면
free
명령어를 통해 swap 영역이 생긴 것을 확인할 수 있다.
이제 프로젝트를 올려도 더 이상 서버가 다운 되지 않는다.
참고
반응형