다나와 검색의 색인 최적화 사례
두줄요약
Elasticsearch 동적 색인에서 발생한 CPU 과부하와 정합성 문제를 BulkProcessor와 백프레셔로 개선했습니다. 운영 로그와 테스트에서 안정성을 높이면서도 처리 시간은 유사하게 유지했습니다.
문제 상황
- Elasticsearch 기반 동적 색인에서 대량 유입으로 CPU 부하와 힙 메모리 사용량 급증
- 샤드 이동, 색인 요청 거절, 원본 DB와 ES 간 정합성 문제, 검색 API 지연 발생
원인 분석
- 잦은 세그먼트 생성으로 Disk I/O와 CPU 사용량 증가
- MQ 메시지 수신 후 즉시 단건처럼 Bulk API 호출하는 비효율적 버퍼링 구조
- ES CPU 상태를 고려하지 않는 색인 요청과 코디네이터 노드 부재
해결 방법
- BulkProcessor API로 요청을 모아 배치 색인 처리
- 커스텀 Request와 afterBulk 로그로 호출처, 타겟 인덱스, 작업 유형 추적
- ES CPU 모니터링 기반 백프레셔와 프록시 서버 도입, busy-waiting 방식으로 색인 속도 조절
성능/운영 포인트
- CPU 80% 도달 전 색인 속도 제어로 시스템 안정성 확보
- 운영 로그 기준 동적 색인 피크 시간대에도 전체 노드 CPU 80% 미만 유지
- 연결 끊김 해소와 검색 응답 지연, 데이터 불일치 개선
