Incident Library

IL-0447 every · 2024-06-24 (게시일)databaseaws

RDS MySQL 인스턴스의 EBS BurstBalance 가 바닥나 IOPS 가 기준 성능으로 묶이고 데이터베이스 성능이 크게 떨어졌다

every 의 한 RDS 인스턴스는 MySQL 5.7.44, db.t3.medium, 범용 SSD gp2 30GiB 였다. 이 인스턴스에서 BurstBalance 가 갑자기 빠르게 줄어 바닥났고, 데이터베이스 성능이 크게 떨어졌다. gp2 볼륨의 기준 성능은 3 IOPS/GB 이고 최소 100 IOPS 다. gp2 볼륨은 IOPS 가 기준 성능을 넘으면 크레딧을 써서 최대 3,000 IOPS 까지 내고, 크레딧이 바닥나면 기준 성능으로 묶인다. 30GiB 볼륨의 기준 성능은 100 IOPS 다.

조사해 보니 BurstBalance 는 주로 WriteIOPS 가 늘어서 줄었다. 복잡한 SELECT 문의 실행 계획에 Using temporary, Using filesort 가 있었고, 팀은 이 쿼리가 임시 테이블에 대량으로 쓰면서 BurstBalance 를 빠르게 썼다고 봤다. 이 쿼리가 어느 시점부터 갑자기 임시 테이블에 많이 쓰게 된 이유는 아직 조사 중이다. 팀은 데이터가 날마다 쌓여 이 쿼리의 임시 테이블이 메모리 안에서 처리할 수 있는 한도를 넘고 디스크에 쓰이기 시작했을 가능성을 짐작하고 있다. 팀이 든 대책은 쿼리 튜닝, gp3 이전이나 스토리지 증설로 기준 IOPS 높이기, tmp_table_size 와 max_heap_table_size 조정, 인스턴스 타입 변경, BurstBalance 감시와 Pingdom 같은 외부 모니터링이었다.

심각도
–
영향 범위
Performance of one RDS for MySQL database dropped sharply
영향 사용자
–
지역
–
감지까지
–
복구까지
–

증상

RDS 인스턴스의 BurstBalance 가 갑자기 빠르게 줄기 시작해 끝내 바닥났고, 데이터베이스 성능이 크게 떨어졌다. 인스턴스는 MySQL 5.7.44, db.t3.medium, 범용 SSD gp2 30GiB 였다.

BurstBalance 는 gp2 볼륨이 기준 성능을 넘어 잠시 높은 IOPS 를 낼 수 있게 해 주는 크레딧의 남은 양이다. 바닥나면 IOPS 가 기준 성능으로 묶인다. 30GiB 볼륨의 기준 성능은 3 IOPS/GB 로 계산한 90 IOPS 가 아니라 최소값인 100 IOPS 다.

CloudWatch 에서 BurstBalance 와 WriteIOPS 를 함께 보면 WriteIOPS 가 늘 때 BurstBalance 가 줄었다. 1시간 평균 WriteIOPS 를 600 으로 잡고 계산하면 기준 성능 100 을 넘는 500 IOPS 를 3,600초 동안 쓰므로 1시간에 크레딧이 1,800,000 줄고, 최대 크레딧 5,400,000 이 3시간 만에 바닥난다.

팀은 CloudWatch 지표, RDS 오류 로그, 슬로 쿼리 로그, Performance Insights 를 보고 문제 쿼리의 실행 계획을 분석했다. I/O 를 크게 쓰는 복잡한 SELECT 문이 있었고, 이 쿼리를 실행할 때 I/O 가 치솟았다. 실행 계획의 extra 에는 Using temporary, Using filesort 가 있어 내부 정렬과 임시 테이블 쓰기가 일어나고 있었다.

증상 데이터베이스 과부하처리량 저하

원인

촉발
복잡한 SELECT 문이 어느 시점부터 갑자기 임시 테이블에 대량으로 쓰기 시작해 WriteIOPS 가 늘었다. 그렇게 바뀐 이유는 아직 조사 중이다.

감지

–

조치

–

후속 조치

교훈

RDS 에서 BurstBalance 가 바닥나면 예상하지 못한 성능 저하가 올 수 있다. 복잡한 쿼리는 I/O 에 큰 영향을 주므로, 데이터베이스 설계와 쿼리 최적화를 계속 고쳐 나가고 성능을 정기적으로 감시해야 한다.

출처

관련 사례

내 클러스터에도 있는지 확인하기

kubegap 은 Claude Code 나 Codex 에서 쿠버네티스 클러스터를 읽기만 하며 이 사례와 같은 상태를 점검합니다. 이 사례의 구성 요소: 데이터베이스, 클라우드 블록 스토리지. 점검 항목의 근거는 이 사례 같은 공개 보고서입니다.

AI 도구와 스크립트용

API 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.