AWS EC2 튕김 현상에 대한 고찰

slee2·2022년 9월 3일
7

main

목록 보기
4/12


CPU 사용량이 후반대에 팍 죽는 것을 확인할 수 있는 지표

EC2의 튕김현상

대학생들은 보통 프로젝트를 진행할때, EC2를 많이 이용한다.(아닌 사람도 있겠지만)
그중에서 프리티어를 사용하기 위해 T2.micro 인스턴스 타입을 많이 사용하게 된다.
하지만, EC2 서버를 이용하는 도중, 갑자기 서버가 멈추는 현상을 겪은 사람이 있을 것이다.

나는 이렇게 튕기는 이유가 메모리를 너무 많이 사용해서 라고 생각을 했었다. 빌드 도중에 튕겼던 기억을 갖고 있기 때문이였다.
아무래도 프리티어를 사용하면 T2.micro를 이용하기 때문에 램 용량도 낮으므로, 프로젝트가 무거워질수록 램이 그만큼 필요하고, 그래서 도중에 멈추고 튕기는 것이라고 생각하였다.

그런데, AWS를 공부하면서 원인은 다른곳에 있다고 생각하게 되었다.

EC2가 멈추는 이유

결론적으로 말하자면, CPU 크레딧을 다 사용한 후, CPU 사용률이 Baseline을 넘었기 때문이다.

위 한줄로는 이해가 쉽지 않을 것이다. 이를 이해하기 위해 우리가 알아야할 몇가지 단어들이 있다.
이해하기 위해 몇가지 적어보도록 하겠다.

CPU 크레딧

EC2에는 CPU 크레딧이라는 개념이 존재한다.
이 개념을 쉽게 말하자면 마나라고 할 수 있다. (다른 곳에서 마나로 많이 표현하고, 이 설명이 좋다고 생각한다.)

그림을 보면 이해가 좀 더 쉬울 것이다.

  • 처음 인스턴스를 생성할때 30 마나를 지급해준다.
  • 시간당 6 마나가 찬다.
  • 마나 최대량은 144이다. 즉 이 이상은 채워지지 않고 버려진다.

그렇다면, CPU 크레딧은 언제 사용이 되는것 일까?

위 그림처럼
서버에서 CPU 이용률이 Baseline보다 높으면, 크레딧을 소모하고,
서버에서 CPU 이용률이 Baseline보다 낮으면, 크레딧이 그만큼 쌓이게 된다.

이는 인스턴스 유형이 버스트 가능한 성능 인스턴스기 때문이다.
즉, CPU 이용을 아끼다가 필요할때 버스트 하여 사용가능하다는 것이다.

그럼 만약 CPU 크레딧을 전부 사용하게 된다면 어떻게 될까?
모드에 따라 다르다.

먼저, 스탠다드 모드의 경우, CPU 크레딧을 모두 소모했을때 Baseline 이상으로 CPU를 사용하지 못하도록 막는다.
이로 인해 흔히 말하는 느려짐, 먹통, 튕김 현상이 발생할 수 있다.
무제한 모드의 경우, CPU 크레딧을 모두 소모하여도 이후에 CPU 사용률을 Baseline 이상으로 사용가능하도록 한다.
그리고, 24시간이 지난 후에 만약 CPU 크레딧이 0보다 적으면 더 사용한만큼 돈을 지불하는 방식이다.

T2는 기본이 스탠다드 모드이고,
T3 이후는 기본이 무제한 모드이다.

그러므로, T2를 사용하면 CPU 크레딧을 모두 소모했을때 멈춤 현상이 일어날 수 있는 것이다.

해결책

해결책은 간단하다. 인스턴스 중지 + 시작을 하면 된다. (재시작 아님)
이는 스택 오버플로우나, 다른 커뮤니티에서도 몇번 나온 이야기이다.
https://serverfault.com/questions/690656/why-sometimes-aws-ec2-works-really-slow
https://stackoverflow.com/questions/28984106/what-is-cpu-credit-balance-in-ec2

인스턴스를 중지하게 되면, CPU 크레딧이 소멸된다.
다시 시작하게 되면, 대부분의 경우 새로운 기본 호스트 컴퓨터로 인스턴스가 마이그레이션된다.(경우에 따라 현재 호스트에 남아 있음).

AWS를 공부하며 이러한 새로운 사실들을 알게 되어 뿌듯하다.

1개의 댓글

comment-user-thumbnail
2022년 11월 4일

slee2님 짱!

답글 달기