Elastic Search

Ch13. 클러스터 성능 측정 - 엘라스틱서치를 위한 벤치마크 툴

webmaster 2025. 11. 3. 23:57
728x90

루씬 벤치마킹 유틸리티

루씬에는 성능 측정을 위해 Luceneutil이라는 벤치마크 유틸리티가 제공된다.(깃허브에 소스코드 공개)

https://github.com/mikemccand/luceneutil

 

GitHub - mikemccand/luceneutil: Various utility scripts for running Lucene performance tests

Various utility scripts for running Lucene performance tests - mikemccand/luceneutil

github.com

이 유틸리티를 이용해 특정 데이터를 반복 테스트해서 벤치마킹 결과를 실시간으로 확인할 수 있게 사이트를 공개하고 있다.

https://benchmarks.mikemccandless.com/indexing.html

 

Lucene nightly indexing benchmark

 

benchmarks.mikemccandless.com

1) 색인 성능 측정: 색인 성능 측정

  • indexing throughput: 일반적인 문서 색인 처리량
  • Analyzers throughput: 분석기를 거치는 문서 색인 처리량
  • Near-real-time refresh latency: 세그먼트 Refresh 작업 처리 시 지연 시간

2) Boolean 쿼리 성능 측정: Boolean 쿼리 성능 측정(아래 쿼리 반복 실행)

  • +high-freq +high-freq
  • +high-freq +medium-freq
  • high-freq high-freq
  • high-freq medium-freq
  • +high-freq +(medium-freq medium-freq)
  • +high-freq +(high-freq high-freq)

3) proximity 쿼리 성능 측정: 근사값 쿼리 성능 측정

  • Exact pharse: phrase 쿼리 성능 측정
  • Sloppy(~4) phrase: Slop 값을 4 이하로 설정하고 성능 측정
  • Span near(~10): Slop 값을 10 이하로 설정하고 성능 측정

4) Faceting 성능 측정: Grouping 성능 측정

  • Term query + date hierarchy
  • All dates hierarchy
  • All months
  • All months (doc value)
  • All dayOfYear
  • All dayOfYear(doc value)

5) Term 쿼리를 이용한 정렬 성능 측정: 텀쿼리 성능 측정

  • Date/time(long, high cardinality): 날짜 타입의 텀 쿼리로 정렬
  • Title(String, high cardinality): 긴 문자열 타입의 텀 쿼리로 정렬
  • Month(String, low cardinality): 짧은 문자열 타입의 텀 쿼리로 정렬
  • Day of year(int, medium cardinality): 숫자 타입의 텀 쿼리로 정렬

엘라스틱서치 Rally

엘라스틱서치에서는 루씬에서 제공하는 유틸리티를 기반으로 클러스터의 성능을 측정할 수 있는 Rally를 제공한다.

https://github.com/elastic/rally

 

GitHub - elastic/rally: Macrobenchmarking framework for Elasticsearch

Macrobenchmarking framework for Elasticsearch. Contribute to elastic/rally development by creating an account on GitHub.

github.com

https://benchmarks.elastic.co/index.html

 

Benchmarks for the Elastic Stack

This page lists the various benchmarks we run for different projects within Elastic. They are created by the developers themselves, and focus on the most important performance metrics.

benchmarks.elastic.co

해당 사이트는 클러스터의 벤치마크 결과를 키바나로 시각화해서 제공하기 때문에 각종 지표를 손쉽게 이해할 수 있다.

벤치마크에 사용되는 서버는 총 4대의 물리서버에서 클러스터가 구축되었으며, 성능 지표는 아래와 같다.

1) Geonames: Structured Data 성능 측정

  • 1000만 개의 문서를 색인하고 다양한 전문 쿼리(match, fuction_score) 및 집계를 실행한 결과를 보고서로 제공

2) Geopoint: Geo Queries의 성능 측정

  • 6천만 개의 위치 문서를 색인하고 다양한 지리적 기반 쿼리를 실행한 결과를 보고서로 제공

3) Percolator: Percolation Queries의 성능 측정

  • 2백만 건의 AOL 질의 색인 작성 및 그에 따른 Percolation 질의 실행 결과를 보고서로 제공

4) PMC: 전문 검색 성능을 측정한다.

  • 색인 성능을 측정하고 과학 논문의 코퍼스에서 쿼리 및 집계를 실행하는 전문 쿼리를 실행한 결과를 보고서로 제공

5) NYC Taxis: Highly Structured Data의 성능 측정

  • 복잡한 구조의 문서로 제공된 2015년 뉴욕의 택시 데이터를 분석, 성능을 측정한 결과를 보고서로 제공

6) Nested: Nested Documents의 성능 측정

  • 스택오버플로의 질문과 답변을 이용해 Nested Document를 구성한 데이터를 분석, 성능을 측정한 결과를 보고서로 제공

7) Http Logs: 아파치 웹 서버 로그의 성능 측정

  • 1998년 월드컵 공식 웹서버의 로그를 분석하고 성능을 측정한 결과를 보고서로 제공

8) NOAA: Range Fields의 성능 측정

  • NOAA에서 제공하는 날씨 데이터를 이용해 Range Field의 성능을 측정한 결과를 보고서로 제공
728x90