오픈소스/ElasticSearch

ElasticSearch 성능 테스트

민둥곰 2021. 5. 16. 18:20

목적

  1. 노드 개수 확립
  2. 하드웨어 사용량 및 효율적인 샤드 개수 확립
    1. 하드웨어 스펙에 따라 검색 성능 상이
    2. 인덱스 총 크기에 따른 효율적인 샤드 개수 확립

필요 정보

 

하드웨어 Elasticsearch
vCPU 각 인덱스 총 크기
RAM 초당 최대 인입 쿼리 수
Disk (I/O) 목표 검색 응답 시간
Network(1G/10G) 인덱스 복제 여부

근거

 

샤드 개수가 적을 경우 단일 쿼리의 성능은 높아지나, 대량의 쿼리 성능은 저하

샤드 개수가 많을 경우 단일 쿼리의 성능은 낮아지나, 대량의 쿼리 성능은 상향

 

이에 따라,

  1. 현재 구성하는 ES 서비스의 쿼리 현황 파악이 필요하다.( 필요한 정보 - 서비스의 규모 및 성질)
  2. index 총 크기가 높아 질 경우 샤드 분배를 통하여 서버 H/W 리소스 최적화 필요 (중점 리소스: Disk I/O, memory 사용량, CPU 사용량)
  3. ES 퍼포먼스 성능 근거하여 최적화(GC Count, Request Time, Indexing Time)

*ES: ElasticSearch

  • Index 크기에 따른 샤드 분배 필요
  • 샤드 개수에 따른 검색 시간
  • 샤드 분배에 따른 영향

Shards 필요성


 

Shards 개수 Case 별


 

테스트 케이스


성능 부하 테스트 (H/W)

 

테스트 조건:

  • 1개의 마스터 & 데이터 노드
  • 1개의 데이터 노드의 하나의 샤드로 진행 
  • 초당 데이터 Query 지정 필요

 

테스트 방식:

  • 샤드 용량(사이즈) 증가로 인한 반복 테스트

 

테스트 목적:

  • 샤드 용량(사이즈)에 따른 메모리 사용량 및 쿼리 응답시간 확인

 


 

검색 성능 테스트 (ElasticSearch)

 

테스트 조건:

  • 3개의 다중 마스터 node 환경

 

테스트 방식:

  1. 1초에 3Query 1분 진행 5번 진행 - 5
  2. 1초에 5번 Query 총 1분 진행 5번 진행 - 5
  3. 1초에 10번 Query 총 1분 진행 5번 진행 - 5

 

테스트 목적:

  검색 성능 테스트 샤드 개수 지정

  1. 샤드 개수 1~5개 별 검색 시간 확인
  2. 목표하는바의 검색 응답 시간에 맞는 샤드 개수 설정

 


테스트


Opensource 활용하여 진행

 

NO 링크 목적 기반 Program Langauge 필수 프로그램 비고
1 https://github.com/logzio/elasticsearch-stress-test 데이터 인입 용도 Python Python 2.7  
2 https://github.com/danielfireman/esperf 지표 수집 용도( CPU 사용량, 요청 응답 시간, Memory, GC, Error count) Go, json   Metricbeat로 대체

 

테스트 환경


 

Node vCPU RAM Master Node Data Node
test-ES-cluster01 4 8GB true true
test-ES-cluster02 4 8GB true true
test-ES-cluster03 4 8GB true true

 

테스트 개요


 

  • 하나의 cluster, 3개의 다중 마스터&데이터 Node 환경 
  • 안정성 있는 service 운영을 위한 테스트
  • H/W 성능 부하 테스트

 

테스트 목적


 

  • H/W 성능에 맞는 shard 개수 및 크기 확인
  • Index 총 크기에 대한 정보 부족으로 인하여 부하 목적에 치중

테스트 결과


 

 

테스트 대상 Shard 개수 특이사항
test-ES-Cluster01 3 -

 

날짜 수행 내용
11:34 AM 20,000 documents
11:39 AM 20,000 documents
11:46 AM 51,000 documents

 

 

 

테스트 대상 Shard 개수 특이사항
test-ES-Cluster01 1 -

 

날짜 수행 내용
10:17 AM test start
10:29 AM test end
199,000 documents

 

 

테스트 대상 Shard 개수 특이사항
test-ES-Cluster01 1 -

 

날짜 수행 내용
14:46 test start
15:13 test end
295,000 documents