안녕하세요. AWS에서 비용을 아끼기 위해 개발 서버나 소규모 웹 서버용으로 T 계열 인스턴스(t2, t3, t4g)를 많이 사용하실 겁니다.
t3.micro나 t3.small은 시간당 몇십 원 수준이라 가성비가 최고죠.
그런데 어느 날 갑자기 서버가 SSH 접속이 안 될 정도로 느려지거나, 웹 응답 속도가 수 초 이상 걸리는 현상을 겪어보신 적 있나요? CPU 사용량을 보면 100%도 아닌데 말이죠.
범인은 바로 T 인스턴스에만 존재하는 독특한 개념, 'CPU 크레딧(Credit)' 때문입니다. 오늘은 이 크레딧 시스템이 도대체 무엇인지, 그리고 어떻게 해결해야 하는지 알아보겠습니다.
1. T 인스턴스의 정체: "하이브리드 자동차"
M(General), C(Compute), R(Memory) 같은 일반적인 인스턴스는 정해진 CPU 성능을 100% 계속 쓸 수 있습니다. 하지만 T(Turbo/Burstable) 인스턴스는 다릅니다.
"평소에는 천천히 가다가(Baseline), 필요할 때만 급가속(Burst) 할 수 있는 하이브리드 자동차"라고 생각하면 됩니다.
기준 성능(Baseline): 평상시에 보장되는 최소 성능 (예: t3.micro는 vCPU의 10%).
버스트(Burst): 트래픽이 몰릴 때 기준 성능을 넘어서 100%까지 끌어다 쓰는 능력.
2. CPU 크레딧(Credit): "부스터 연료"
이 '버스트(급가속)'를 무한정 쓸 수 있는 게 아닙니다. CPU 크레딧이라는 연료가 있어야만 가능합니다.
① 크레딧은 어떻게 쌓이나요? (적립)
CPU를 안 쓰고 놀고 있을 때(기준 성능 이하로 사용할 때) 크레딧이 통장에 쌓입니다.
서버를 켜두기만 하고 아무것도 안 하면 연료가 가득 차겠죠?
② 크레딧은 언제 쓰나요? (소모)
CPU 사용량이 기준 성능(Baseline)을 넘어설 때, 쌓아둔 크레딧을 태우면서 성능을 냅니다.
예를 들어, 배포를 하거나 컴파일을 돌려서 CPU가 80~100%로 치솟으면 크레딧이 빠르게 줄어듭니다.
3. 함정: 연료가 바닥나면? (Throttling)
문제는 열심히 일을 해서 쌓아둔 크레딧을 다 써버렸을 때(Credit Balance = 0) 발생합니다.
현상: AWS가 강제로 CPU 성능을 **기준 성능(Baseline)**으로 낮춰버립니다.
체감: t3.micro의 경우 기준 성능이 **10%**입니다. 즉, 2 vCPU 짜리 서버가 갑자기 0.2 vCPU 성능의 고물이 되어버리는 겁니다.
결과: 간단한 명령어도 렉이 걸리고, 웹 페이지는 타임아웃이 나기 시작합니다. 이때 사용자는 "서버가 멈췄다"고 느끼게 됩니다.
???? 트러블슈팅 팁: CloudWatch에서 CPUCreditBalance 지표를 확인해 보세요. 이 그래프가 '0' 바닥을 기어가고 있다면, 100% 크레딧 고갈 문제입니다.
4. 해결책 1: 인스턴스 타입 변경 (Upscale)
가장 정석적인 방법입니다.
상황: 우리 서비스는 평균 CPU 사용량이 계속 20~30%를 넘는다.
해결: T 타입이 맞지 않는 워크로드입니다. 크레딧 제한이 없는 M 계열(m5.large 등)이나 C 계열로 변경하거나, 더 높은 등급의 T 타입(t3.large 등)으로 올려서 기준 성능 자체를 높여야 합니다.
5. 해결책 2: "Unlimited 모드" 켜기
"평소엔 CPU를 안 쓰는데, 가끔 새벽에 배치 돌 때만 CPU를 엄청 써요!" 이런 경우엔 인스턴스 타입을 바꾸기 아깝죠? 이때 쓰는 것이 Unlimited 모드입니다.
Unlimited 모드란?
크레딧이 '0'이 되어도 성능을 떨구지 않고, 계속 100% 성능을 쓰게 해주는 기능입니다.
원리: "너 연료 떨어졌어? 일단 내가 대출(Surplus Credit) 해줄게. 나중에 갚아!"
비용:
나중에 CPU가 한가해지면 대출받은 크레딧을 자동으로 갚습니다. (추가 비용 X)
만약 계속 CPU를 써서 갚지 못한다면? **추가 요금(Surplus Credit 비용)**이 청구됩니다.
설정 방법
T2: 기본값이 Standard입니다. 콘솔에서 Change credit specification 메뉴를 통해 Unlimited로 바꿔줘야 합니다.
T3 / T4g: 기본값이 이미 Unlimited로 되어 있습니다. (그래서 T3는 느려지는 대신 요금이 더 나올 수 있습니다.)
6. 요약: 내 서버 지키기
개발 서버/테스트용: T 타입이 최고입니다. 잠깐 쓰고 말 거니까요.
운영 서버: T 타입을 쓴다면 반드시 CPUCreditBalance 경보(Alarm)를 걸어두세요.
지속적인 고부하: CPU를 꾸준히 많이 쓴다면 T 타입은 피하세요. 배보다 배꼽(Unlimited 추가 요금)이 더 커질 수 있습니다. 차라리 C6g나 M6g 같은 타입이 맘 편합니다.
마치며
"싼 게 비지떡이 아니라, 싼 이유를 알고 써야 합니다."
T 인스턴스는 간헐적인 트래픽이 발생하는 웹 서버나 마이크로서비스에는 최고의 가성비를 보여줍니다. 하지만 크레딧의 원리를 모르면 중요한 순간에 서버가 멈추는 대형 사고가 터질 수 있죠.
