AWS 라이트세일로 사이트 운영시 주의해야 할 사항 | CPU 버스트 용량
CPU 버스트 용량의 의미
제가 운영하는 코드도사 사이트는 “AWS 라이트세일” 로 운영이 되고 있습니다. 라이트세일 인스턴스 중에서 “워드프레스” 라는 인스턴스를 새로 설치하여 사이트를 운영중입니다.
라이트세일에서 워드프레스를 설치하는 법에 대해서는 위의 글을 참고하시기 바랍니다.
그런데 얼마전에 서버의 자원이 갑자기 급증하는 일이 발생했습니다. 정확한 원인은 알 수 없었지만 문제는 CPU 점유율이 높아지는 바람에 서버의 동작에 문제가 생긴 것이었습니다.
CPU 점유율이 높아진다고 해서 접속에 문제가 생기는 것은 조금 이상했습니다. 그래서 좀더 알아보니 라이트세일의 구조적인 문제가 있음을 알아냈습니다.
제가 운영하는 인스턴스의 지표 그래프 중 일부입니다. 여기서 표를 보면 5분당 CPU 평균 사용율을 나타내는데요. 그래프의 영역이 “지속 가능 영역” 과 “버스트 가능 영역” 으로 구분이 되어 있습니다.
일단은 현재까지 지속 가능 영역에 존재합니다만 만약 CPU 점유율이 상승하게 되어 버스트 가능 영역으로 가게 되면 “CPU 버스트 용량”을 소모하게 됩니다.
응 이게 무슨 말일까요? 말이 좀 어렵긴 한데 위의 그래프를 보며 다시 설명드리겠습니다. CPU 사용량이 버스트 가능 영역으로 진입하게 되면 바로 위 그래프인 “남은 CPU 버스트 용량” 을 소비하게 됩니다. 쉽게 말해서 라이트세일에서 CPU는 지속 가능 영역을 넘어서 소비를 하게 되면 마치 메모리를 소비하듯이 정해진 CPU 버스트 용량을 소모하게 됩니다.
따라서 지속적으로 CPU 점유율이 높아지면 그에 반비례로 CPU 용량은 줄어들게 됩니다. 그렇게 야금야금 CPU 용량을 소모하면서 0%가 되면 시스템은 먹통이 되는 개념입니다.
라이트세일은 가상 서버 입니다. 그래서 한대의 서버에 여러 가상 서버들을 생성하여 이용자들에게 대여를 해줍니다. 하지만 서버의 자원은 한정되어 있기 때문에 CPU 자원을 많이 소모하는 유저에게 일종의 “패널티”를 주는 것입니다.
만약 CPU 자원을 많이 소모해도 CPU 버스트 용량을 소모하지 못하게 하려면 “상위 플랜 요금”으로 바꾸면 됩니다. 즉 “돈을 들여야 한다는 것이지요”
CPU 버스트에 대하여 좀더 자세한 내용은 위 링크 문서를 참고하면 됩니다. 위의 표는 그 예를 잘 설명해 주고 있는데, 예를 들어 내가 월 10 달러 플랜을 쓴다면 지속 가능 영역의 CPU는 20% 로 설정이 되어 있습니다.
만약 시스템 운용중에 CPU 점유율이 20%를 넘어가게 되면 CPU 버스트 용량이 점차 차감이 되게 됩니다. 따라서 운영자 입장에서는 되도록 20%를 넘지 않게 운영을 해야 CPU 버스트 용량이 차감되지 않습니다.
라이트세일의 2% 부족한 점 CPU 버스트 용량
이번에 라이트세일의 CPU 버스트 용량에 대한 개념을 알게 된 후에는 다소 아쉬움이 생겼습니다. 라이트세일은 가성비가 좋기로 유명한 가상 서버이고 트래픽과 디스크 용량을 꽤 많이 줘서 나름 만족을 하던 서비스였습니다.
하지만 CPU 점유율이 높은 기능이나 소프트웨어를 사용하면 시스템에 제한이 걸리기 때문에 지속적으로 운영이 불가능합니다. 좀더 많은 CPU 자원을 쓰려면 그만큼 비용이 드는 것은 어쩔 수 없나 봅니다.
역시 “저렴하면서 좋은 솔루션”은 찾기는 쉽지 않은거 같습니다.