esrally 병렬 search처리

개발새발·2022년 6월 25일
0

elasticsearch

목록 보기
26/54

esrally를 돌릴 때, 특정 쿼리문 돌리고나서 다음 쿼리문을 돌린 후의 성능을 보고싶은 경우가 있었다. 음 그런데 결론적으로는 esrally 자체는 한 쿼리당 하나의 결과만을 보여주고, 요청보낼때도 각 쿼리마다 성능이 달라지니 굳이 한꺼번에 테스트를 할 필요가 없다고 생각이 들어 각 쿼리를 하나씩 테스트하기로 했다. 👩‍🍳 이렇게 결정나기 전에 어떻게 하면 될까 하다가 병렬처리하는 방법이 있길래 직렬처리는 아니지만 혹시나해서 일단 한번 테스트해봤다.

기존 코드

기존에는 아래처럼 challenge명을 적고, 테스트할 정보를 적는다. schedule안에 테스트할 operation 정보들과 다른 조건들을 정의한다.
schedule안에 테스트할 operation 들을 적는다.
operation에 operation-type는 search, bulk등이 있다. index는 테스트할 인덱스(쉼표로 구분하여 여러개도 가능하다.)를 적는다. param-source는 등록해놓은 테스트할 쿼리문이라고 보면 된다.
clients 는 테스트할 클라이언트 수, warmup-time-period는 es를 예열하기 위해 기다리는 시간(초), time-period는 요청 처리가 시작되고 완전한 응답을 받기까지의 시간, target-throughput은 목표처리량을 말한다.

{
      "name": "test",
      "description": "test query",
      "default": false,
      "schedule": [
        {
          "operation": {
            "operation-type": "search",
            "index": "tmp",
            "param-source": "tmp_query"
          },
          "clients": 1000,
          "warmup-time-period": 5,
          "time-period": 60,
          "target-throughput": 1000
        }
     ]
}

병렬처리로 인한 코드

병렬처리를 위해서는 schedule안에 parallel 을 넣고, 그 안에 테스트할 조건과 operation들을 나열한 tasks 라는 배열을 생성해주면 된다.

profile
발새발개

0개의 댓글