aws ubuntu에서 swap 메모리 설정하기 (with EC2가 갑자기 상태 이상으로 접속 및 접근 불가)
최근 AWS의 EC2 인스턴스가...
현재 베타 테스트로 진행 중인 AWS의 EC2 인스턴스가 자꾸 상태이상 1/2 상태로 되면서 접속이 불가능했었다.
간헐적으로 일어나는걸 보면 뭔가 문제가 좀 심각한 거 같았다.
AWS를 잘 쓰는 타입은 아니라서...
클라우드 워치인가 모니터링 툴을 봤는데 CPU 사용률이 갑자기 치솟다가 멈춰 버리는 구간이 보였다.
정확히 표현하면 내가 운영하는 서비스에 로그가 기록되는데, 일정 시간 마지막 로그를 보면 그 CPU 사용률이 튄 뒤부터 로그가 끊겼다.
그렇다고 내 서비스가 CPU 파워를 엄청 쓰는 것도 아니고...접속률은 베타라서 그렇게 많지 않다.
커널 로그인가에서 메모리 관련 에러를 찾아봤지만 없었다. (근데 메모리가 범인...)
도데체 뭐가 문제인가 하다가 이것저것 검색을 하던 도중 나랑 비슷한 증상을 가진 글 을 보게 되었다.
여기에 나온것과 같이 메모리 문제였다.
근데 나 같은 경우 위에서 나온 명령어는 동작하지 않았다.
내 환경은 Ubuntu 20.04 LTS였다. (물론 지금 베타테스트 환경은 또 다르다...) 위 운영체제를 기준으로 작성하겠다.
Swap 생성
- sudo fallocate -l 10G /swapfile
- sudo chmod 0600 /swapfile
- sudo mkswap /swapfile
- sudo swapon /swapfile
- free -m
위 명령어를 풀어서 설명하면...
- 스왑 파일을 만드는 것 (난 대략 10Gb 정도 잡았다.)
- 권한을 준다
- 스왑 생성 (처리 결과는 아래 참조)
test@ip-999-99-999-99:/$ sudo mkswap /swapfile
mkswap: /swapfile: warning: wiping old swap signature.
Setting up swapspace version 1, size = 10 GiB (10737414144 bytes)
no label, UUID=8a30d01e-c3b0-4ccc-bbbb-ada01aaaaac
- 스왑을 실행
- 메모리 할당 확인 (아래 확인 -> 숫자는 임의로 적음 참고만..)
total used free shared buff/cache available
Mem: 968 485 90 0 393 330
Swap: 10239 260 9979
만약 뭔가 꼬이거나 스왑을 풀어야 할 경우 다시 아래대로 해준다.
Swap 해제
- sudo swapoff -v /swapfile
- sudo rm /swapfile
- free -m
보충 설명은 아래...
- 스왑 해체
- 스왑 파일 제거
- 스왑이 풀렸는지 확인해본다
정리
EC2가 갑자기 내려가는 경우는 다양한데, 이번처럼 CPU 파워를 막 치고 가다 다운되는게 메모리 부족때문인지는 몰랐다.
사실 내가 잘못 로직을 짠게 있나 싶었는데...
무튼 이 뒤로 한 4일 갔는데 아직 증상이 나타나진 않고 안정적으로 잘 되고 있다.
찾아보니 스왑은 아무래도 램이 아닌 하드 또는 SSD를 쓰는 거라서 퍼포먼스에서 이슈가 발생할 수 있다.
하지만 베타테스트 운영이나 개발 목적으로는 스왑을 써도 충분한거 같다.
나중에는 결국 하드웨어 스팩을 돈으로 올려야 하겠지만 말이다. ㅎㅎ