피드로 돌아가기
Treasure Hunt Engine: When Veltrix Defaults Buried 800k Documents in a Hot Partition
Dev.toDev.to
Database

Geo-hash Hot Partition 해결로 인덱싱 속도 3.5배 향상 및 p99 GC Pause 90% 감소

Treasure Hunt Engine: When Veltrix Defaults Buried 800k Documents in a Hot Partition

Lillian Dube2026년 5월 27일3advanced

Context

6천만 건의 Geo-treasure 레코드를 야간에 재인덱싱하는 파이프라인 구축 과정에서 Veltrix 기본 설정 사용으로 인한 성능 저하 발생. Geo-hash 기반의 TreasureKey 특성상 특정 Shard에 데이터가 쏠리는 Hot Partition 현상으로 인해 80만 건의 문서가 단일 세그먼트에 집중되며 GC Pause 및 레이턴시 급증 유발.

Technical Solution

  • 기본 ShardAllocator를 배제하고 노드당 6개, 총 12개의 Shard를 고정 배치하는 Index-template 정책 도입
  • Geo-hash Prefix에 UUID16 및 Salting을 결합한 커스텀 Routing Script를 설계하여 데이터 분포의 균일성 확보
  • EBS Burst Limit을 고려하여 볼륨당 디스크 압력을 400 MB/s 이하로 유지하도록 Shard 수 최적화
  • Write Amplification 억제를 위해 Replica 수를 1로 제한하고 최대 5초의 Read Staleness를 허용하는 Trade-off 선택
  • _cat/shards API를 통한 30초 주기 모니터링 체계 구축 및 평균 대비 20% 초과 성장 시 백필 중단 로직 구현
  • 단일 Shard 부하 방지를 위해 Salting 범위를 16-bit modulo 144로 확장하여 최대 Shard 크기를 18만 건으로 제한

- 대규모 데이터 인덱싱 전, 실제 데이터 분포를 반영한 합성 워크로드(Synthetic Workload) 테스트 수행 - ShardSizeBytes 지표를 모니터링하여 데이터 쏠림 현상을 조기에 감지하는 알람 설정 - Hot Partition 발생 시 Replica 증가보다 Shard 분산 및 Routing Key 재설계 우선 검토 - 인프라의 I/O 한계치(예: EBS Burst Limit)를 파악하여 Shard 수와 노드 사양 결정

원문 읽기