RDS CPU 사용량
RDS CPU 사용량으로인한 CloudWatch 알람이 발생하고 있다.
리소스 관리를 위해 어느 지점에서 CPU 발생량이 올라가는지 추적해보고자 한다.
먼저 ECS 태스크 상의 Spike 트래픽이 들어오고 있는지 확인한다.
배치 서버 CPU 사용량
API 서버의 경우 소비자가 접속하기 편한 오전, 오후 시간대에 요청이 몰리고 있음을 확인 할 수 있으나, 갑작스런 Spike 트래픽이라고 하기엔 부족하다.
배치 서버의 경우 트래픽 추이가 RDS와 유사한 점을 확인 할 수 있다.
배치 로직으로 인한 CPU 상승이라고 추정했을 때
재고 배치는 하루 네 번 7시/12시/15시 30분/17시 30분에 발생한다.
이 때의 CPU 상승률은 예상 내로 작동하고 있으며 쿼리 튜닝이 필요한 점은 인지하고 있다
재고 배치를 제외한 상승 시간대를 확인해보면 0시/10시/13시/14시/16시/18시로 확인된다.
해당 시간에 배치 동작에 대해서 정리해보면 다음과 같다.
스케쥴링 시간 | 작업명 |
0 | modifyProductBulkPrice
generateConfirmedPurchaseAll
expirePoint |
10 | getBizTalkTokenAM
generateInduceFirstPurchaseCoupon
generateInduceRePurchaseCoupon
generateMonthlyFingerpushAgentStatisticsExcel
tireRepairGenerateConfirmedOrderAmSecond
willExpirePointNotify
generateEnginePage |
13 | generateEnginePage |
14 | generateEnginePage |
16 | |
18 | generateEnginePage |
현재 RDS 및 ECS 태스크 CPU 상승 추이로 보아 generateEnginePage 배치 로직이 문제를 발생시키고 있는 것으로 추정된다.
해당 로직 내의 쿼리는 현재 슬로우 쿼리로 로그가 남고 있으므로 해당 건은 쿼리 튜닝으로 해결될 것으로 보인다.