AWS

AWS EC2 GreaterThanOrEqualToThreshold-CPUUtilization 해결법

늦깍이 2025. 6. 11. 22:46

가난한 개발자에게 프리티어 이상은 사치다

AWS를 사용하다보면 기상천외한 요금을 받는다는 사례를 너무 많이 접한 나머지 "AWS 공포증"을 가지고 있는 개발자가 바로 접니다 허허
하지만, AWS 안쓰면 Firebase라던지... 아니면 직접 dothome이라던지... 그런걸로 만들어야될텐데,
솔직히 dothome은 써본 사람으로서 그닥 만족스럽지 못했고, Firebase는 도찐개찐이라는 이미지가 있는걸?

고로, (가오도 또 무시하지만) 뭔가 AWS EC2로 서버 작업을 하게 되었다. 프리티어로 설정을 하고(프리티어 만드는 작업은 추후에 또 올려보겠다.) EC2 서버를 만들어본 결과(정말 이것저것 요금에 무리가 안가게 최대한 주의를 하며), 매우 만족스럽다고 생각했다.

하지만 프리티어는 연약해...

근데 웬걸 AWS EC2 프리티어를 사용하다보면 필연적으로(아마도..?) 만나게 되는 문제가 있다.
툭하면 CPU가 치솓아서 서버가 다운되어버린다는 것.

딱 두개 설정했다.

  • RDS와 연계에서 MySQL 데이터베이스를 연동시킨 것
  • Spring boot SNAPSHOT을 EC2 서버에서 가동시킨 것
    두개였지만, 램이 2GB(1GB면 죄송합니다...)인 서버에겐 너무나 과중한 책무였나보다.

계속 무시했지만, 도저히 안되겠다싶어 좀 찾아보고 조치를 취한 후 1달이 지나보니 더이상 문제가 생기지 않아 이렇게 공유합니다. ( 또 서버 만들 일이 있을 듯해서기도 합니다. 머리가 너무 나쁘거덩여 )

일단 저 에러는 어떻게 잡아냈는가?

CPU 상승 알림에 관한 얘기가 되는데, 자세히는 말을 할 필욘 없지만 CloudWatch를 설정하고, 핸드폰에 AWS 앱을 다운받아놓으면 하루에 한번은 서버가 터졌다는 알림을 받을 수 있습니다 허허

임시 조치

  1. EC2에 cloud-init을 설치
  2. 서버가 재기동될 때 반드시 실행될 스크립트를 짜고 인스턴스 설정의 사용자 데이터 편집 부분에다가 설정해두면 됩니다.

이유가 뭘까?

아마도 위에 말한 딱 두개가 너무 무거웠던거 아닐까 싶습니다.
그치만 전 방법이 없는걸요... 저 두개도 못 돌리면 우째요 그쵸? 그래서 그냥 참고 하루에 한번 서버 터지는거 쩔수겠거니 했어요...
게으른 개발자가 이럽니다 ㅎ

해결 방법

자, 이게 궁극적 방법인지 아닌지 저는 모릅니다. 저는 이렇게 쓸꺼같아요. 혹시 조언할께 있다면 꼭 좀 알려주세요 부탁드립니다.

여러 블로그나 인공지능과 대화한 결과, 리눅스의 SWAP 기능을 사용하면 될듯합니다.

SWAP이 뭐냐?

이 또한 저의 느낌대로 설명하겠습니다.
RAM이 부족하면 디스크 용량 가져와서 RAM처럼 사용한다!!! 이게 SWAP입니다.
장점이 뭐냐, 디스크 용량은 RAM에 비해선 최소 열배는 크니 램 용량이 확 커져서 RAM이 부족해질 일이 없겠지요?
단점이 뭐냐, 많이들 들었을지도 모르곘지만 RAM은 빠르고 디스크는 느려요. 고로 서비스가 느려집니다. 하지만 그닥 체감 못했어요. 서비스가 허접하거덩여 ㅎㅎㅎ

SWAP 설정 방법 STEP-BY-STEP

프리티어 기준입니다.

  1. sudo dd if=/dev/zero of=/swapfile bs=128M count=16 스왑 공간을 총 16개를 만듭니다. 대충 2GB죠? RAM 공간을 *2한 느낌?
  2. sudo chmod 600 /swapfile 스왑 공간에 대해서 읽기 쓰기 권한 줘야죠?
  3. sudo mkswap /swapfile 리눅스 스왑 영역 설정하고!
  4. sudo swapon /swapfile 스왑 공간에 스왑 파일을 추가하고 즉시 사용할수있도록 합니당
  5. sudo vi /etc/fstab로 부팅시 스왑 파일을 활성화 하도록 설정해두고( 매번 저 짓을 할 순 없겠지용 )
  6. /swapfile swap swap defaults 0 0 vi 편집기로 연 파일에 이 문구 넣고 저장!
    이 순서면 끝이에요.

솔직히 너무 간단해서 왜 게으르게 살았나 싶었어요. 반성 또 반성.

이게 궁극적 해결법이 아닐 수 있으니 혹시 고수분들 도움주시면 너무 감사하겠습니다. 이상~

'AWS' 카테고리의 다른 글

[AWS] S3 버킷 만들기  (2) 2025.06.29