백엔드
누가 내 DB CPU를 훔쳐갔을까? (feat. debezium)
두줄요약
Debezium connector 재시작 때 오래된 binlog를 다시 읽으며 DB CPU가 급등한 원인을 분석했습니다. heartbeat.interval.ms를 적용해 상태 기록 주기를 보강하고 문제를 해결했습니다.
문제 상황
- Debezium connector 재시작 시 메인 DB CPU가 간헐적으로 80% 이상 치솟는 현상
- 트래픽 증가와 무관하게 SHOW BINARY LOGS 부하가 발생한 흔적
원인 분석
- Network I/O 급증과 RDS Performance Insight를 통해 Debezium connect pod를 부하 주체로 특정
- connector 상태가 최신이 아니라 며칠 전 binlog position으로 저장된 사실 확인
- 변경이 적은 테이블을 추적할 때 상태 기록이 늦어져 재시작 시 오래된 binlog를 다시 읽는 구조
해결 방법
- heartbeat.interval.ms 옵션으로 주기적 heartbeat와 상태 기록 유도
- 재배포 후 binlog position이 주기적으로 갱신되고 CPU 급등 현상도 해소
