-
AWS ec2 프리티어 t2.micro 인스턴스 다운문제 해결개발일지/개발일지 2021. 6. 25. 22:56
작은 개인 프로젝트 배포를 위해 AWS EC2중 무료인 t2.micro를 사용하시는 분들이 많을 것입니다. 그런데 t2.micro를 사용하다보면 인스턴스가 다운돼서 분명 인스턴스 상태는 running 이지만 ssh 접속이 안되고 배포가 정상적으로 이루어지지 않아 강제종료후 재시작한 경험이 많을 것입니다.
위와 같은 문제의 이유는 여러가지 있겠지만 아마 80% 이상은 메인메모리 부족때문에 생긴것입니다. t2.micro의 메모리는 1GB 밖에 되지 않아 웹배포라도 하나 돌리면 거의 메모리가 꽉차게 되어 다운되는 것입니다. 이 문제를 해결하기 위해 메모리가 더 큰 인스턴스를 사용하는 방법도 있겠지만 이러면 서버운영비가 나가게 되는데 작은 프로젝트 돌리기에는 너~무 아깝다. 그래서 다른 해결책을 소개해드리고자 하는데 스왑파일을 이용하여 메모리를 늘리는것입니다.
잘아시겠지만 프로세서는 많은 프로그램을 메모리에 동시에 올리기 위해 가상메모리를 이용하여 추상화를 하고 올라가지 않은 영역은 하드에 남게된다. 스왑영역은 이 올라가지 못한 부분을 담는 역할을 하는데 이 스왑영역을 늘려줌으로서 메모리를 늘리는 효과를 보는것이다.
프리티어의 메모리는 1GB이므로 여기서 2GB를 더 늘려보겠다. (128MB * 16 = 2GB)
$ sudo dd if=/dev/zero of=/swapfile bs=128M count=16
스왑 파일에 대한 읽기 및 쓰기 권한을 업데이트
$ 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를 다시 입력하여 메모리를 확인해본다.
위 방법으로 스왑파일을 생성하고 설정함으로서 더 이상 메모리 부족문제로 인스턴스가 다운되는일을 발생하지 않을것이다.
참고
https://aws.amazon.com/ko/premiumsupport/knowledge-center/ec2-memory-swap-file/
'개발일지 > 개발일지' 카테고리의 다른 글
[Django] Redis로 API rate limit 해결하기 (0) 2021.07.04 나만의 온라인저지 사이트 만들기 - 3 (0) 2021.07.03 나만의 온라인저지 사이트 만들기 - 2 (2) 2021.06.28 나만의 온라인저지 사이트 만들기 - 1 (1) 2021.06.25