뒤로가기

Elastic

FASTCAT-ElasticSearch 테스트 - 검색+동적색인

하선호 2020.07.15.

1. 개요

이번에는 검색과 동적색인이 동시에 발생했을 때의 테스트입니다. 실제 운영환경에서도 검색과 동적색인이 동시에 수행하여 동적색인으로 변경되는 문서를 검색을 통해 확인할 수 있습니다. 여기서는 두 작업이 동시에 발생 할 때의 검색 성능의 변화에 중점을 두고 확인했습니다.

1) 색인 및 배포
2) 검색
3) 동적색인
4) 동적색인과 검색

2. 테스트 구성

[서버 사양]

인스턴스명 노드명 CPU MEMORY
M5.8xlarge 호출용 노드 3.1Ghz * 32Core 128G
M5.12xlarge Node1(data) 3.1Ghz * 48Core 196G
M5.12xlarge Node2(data) 3.1Ghz * 48Core 196G

[검색+동적색인 테스트 구성도]

/images/2020-07-15-Elasticsearch-SearchDynamicIndex/search-di-test-diagram.png

호출용 노드에서 검색과 동적색인을 동시에 Node1에 있는 검색엔진으로 호출합니다. 각각 검색과 동적색인 테스트에서 사용한 Jmeter와 동적색인 호출기를 사용하며 테스트는 각 검색엔진별로 순차적으로 진행합니다. 이전과 마찬가지로 5분동안 호출하며 동적색인은 9개의 볼륨에 요청하였습니다.

3. 검색+동적색인 테스트 결과

3-1. FASTCAT

쓰레드 호출수 응답시간속도(ms) 응답시간속도(ms) TPS CPU 사용률(%) 동적 색인 수
2 3,821 156 1989 12.7 Node1 : 58% , Node2 : 53% 3,509,126
4 7,553 158 1756 25.2 Node1 : 68% , Node2 : 67% 3,281,147
8 13,163 182 2691 43.8 Node1 : 76% , Node2 : 73% 3,205,265
16 15,398 311 2247 51.3 Node1 : 83% , Node2 : 75% 3,143,177

기존 검색 테스트와 비교

  • FASTCAT의 경우 검색성능이 크게 떨어졌습니다. 검색 소요시간이 약 170% 증가하였고 그에 따라 TPS가 64% 감소하였습니다. FASTCAT의 동적색인 테스트때 CPU는 약 50~75%를 사용했음으로 보아 동적색인의 높은 CPU 사용률이 검색성능에도 영향을 준 것 같습니다.
쓰레드 호출수   평균응답시간(ms)   최대응답시간(ms)   TPS   CPU 사용률(%)  
  검색 검색+동적색인 검색 검색+동적색인 검색 검색+동적색인 검색 검색+동적색인 검색 검색+동적색인
2 10,410 3,821 57.42 156 1194 1989 34.69 12.7 Node1 : 7.6%
Node2 : 6%
Node1 : 58%
Node2 : 53%
4 22303 3,821 53.65 156 1247 1989 74.21 12.7 Node1 : 15.8%
Node2 : 12.8%
Node1 : 58%
Node2 : 53%
8 33167 7,553 72.19 158 1733 1756 110.52 25.2 Node1 : 47.6%
Node2 : 38%
Node1 : 68%
Node2 : 67%
16 43965 13,163 108.95 182 2247 2691 146.49 43.8 Node1 : 90.8%
Node2 : 80.8%
Node1 : 76%
Node2 : 73%

3-2. ElasticSearch

쓰레드 호출수 평균응답시간(ms) 최대응답시간(ms) TPS CPU 사용률(%) 동적 색인 수
2 6,550 91 1136 21.8 Node1 : 26% , Node2 : 24% 3,606,000
4 11,518 104 1813 38.3 Node1 : 42% , Node2 : 40% 3,513,500
8 18,558 129 2329 61.8 Node1 : 72% , Node2 : 71% 3,413,500
16 22,370 214 3419 74.4 Node1 : 96% , Node2 : 95% 2,488,000

기존 검색 테스트와 비교

  • ElasticSearch 역시 동적색인과 같이 검색을 수행시 검색성능이 떨어졌습니다. 검색 소요시간은 26%증가하였고 TPS가 20% 감소하였습니다. ElasticSearch의 동적색인시 CPU 사용률은 10%정도로 낮아서 FASTCAT 보다는 영향을 덜 받은 것 같습니다.
쓰레드 호출수   평균응답시간(ms)   최대응답시간(ms)   TPS   CPU 사용률(%)  
  검색 검색+동적색인 검색 검색+동적색인 검색 검색+동적색인 검색 검색+동적색인 검색 검색+동적색인
2 8,063 6,550 74.28 91 1169 1136 26.88 21.8 Node1 : 11%
Node2 : 11%
Node1 : 26%
Node2 : 24%
4 14,887 11,518 80.47 104 1251 1813 49.6 38.3 Node1 : 31%
Node2 : 30%
Node1 : 42%
Node2 : 40%
8 23,609 18,558 101.52 129 2584 2329 78.6 61.8 Node1 : 46%
Node2 : 40%
Node1 : 72%
Node2 : 71%
16 28,083 22,370 170.68 214 3423 3419 93.29 74.4 Node1 : 74%
Node2 : 69%
Node1 : 96%
Node2 : 95%

FASTCAT-ELASITCSEARCH 비교

  • 검색성능만 비교했을 때 FASTCAT의 검색성능이 ElasticSearch보다 좋았습니다. 하지만 동적색인과 동시에 수행시 FASTCAT 동적색인의 높은 CPU 사용률로 인해 검색 성능이 크게 떨어져서 결과적으로 ElasticSearch가 FASTCAT보다 검색성능이 더 높음을 확인 할 수 있었습니다.
쓰레드 호출수   평균응답시간(ms)   최대응답시간(ms)   TPS   CPU 사용률(%)  
  FASTCAT ES FASTCAT ES FASTCAT ES FASTCAT ES FASTCAT ES
2 3,821 6,550 156 91 1989 1136 26.88 21.8 Node1 : 58%
Node2 : 53%
Node1 : 26%
Node2 : 24%
4 7,553 11,518 158 104 1756 1813 49.6 38.3 Node1 : 68%
Node2 : 67%
Node1 : 42%
Node2 : 40%
8 13,163 18,558 182 129 2691 2329 78.6 61.8 Node1 : 76%
Node2 : 73%
Node1 : 72%
Node2 : 71%
16 15,398 22,370 311 214 2247 3419 93.29 74.4 Node1 : 83%
Node2 : 75%
Node1 : 96%
Node2 : 95%

4. 추가 테스트

  • 앞서 진행한 테스트는 실제 운영으로 들어오는 동적색인량을 고려하지 않고 무제한으로 동적색인을 요청하는 형태였습니다. 즉 최대 부하일 때의 성능을 테스트한 결과가 되었으며 실제 운영환경과 비슷한 동적색인이 들어왔을 때의 성능을 비교할 필요가 있어보였습니다. 이를 통해 FASTCAT에서 ElasticSearch로 교체시 기존 서버의 활용 가능이나 추가적으로 필요한 스펙을 산정할 수 있을 것 같다고 예상했습니다.

이번 테스트는 쓰레드 8, 16일때만 측정하였으며 운영기준 인덱스 기준 초당 약 400건의 동적색인을 처리 할 수 있도록 호출하였습니다. (인덱스 10개 기준 초당 4000건)

4-1. FASTCAT

  • 무제한으로 요청했을 때보다는 검색성능이 좋아졌습니다. 동적색인 CPU 사용률이 높은만큼 검색만 수행했을 때보다는 낮아 검색과 검색+동적색인의 중간 성능이 나왔습니다.

1) 검색

쓰레드 호출수 평균응답시간(ms) 최대응답시간(ms) TPS CPU 사용률(%)
8 33,167 72.19 1733 110.52 Node1 : 47%
Node2 : 38%
16 43965 108.95 2247 146.49 Node1 : 90%
Node2 : 80%

2) 검색+동적색인(무제한)

쓰레드 호출수 평균응답시간(ms) 최대응답시간(ms) TPS CPU 사용률(%) 동적색인 수 초당 색인
8 13,163 182 2691 43.8 Node1 : 76%
Node2 : 73%
3205265 10684
16 15,398 311 2247 51.3 Node1 : 83%
Node2 : 75%
3143177 10477

3) 검색+동적색인(초당 4000)

쓰레드 호출수 평균응답시간(ms) 최대응답시간(ms) TPS CPU 사용률(%) 동적색인 수 초당 색인
8 24987 95 2099 83 Node1 : 70%
Node2 : 53%
1084000 3613
16 23718 202 2510 78.9 Node1 : 94%
Node2 : 92%
1168000 3893

4-2. ELASTICSEARCH

  • ElasticSearch의 경우 도중에 검색 쿼리가 변경된 부분이 있어 검색테스트를 별도로 다시 측정하였습니다. 해당 기준으로 봤을 때 초당 4000건의 동적색인시 검색만 수행한 결과와 크게 차이가 나지 않았습니다.

1) 검색

쓰레드 호출수 평균응답시간(ms) 최대응답시간(ms) TPS CPU 사용률(%)
8 27,470 87 1395 91.5 Node1 : 67%
Node2 : 63%
16 32,555 147 2628 108.3 Node1 : 96%
Node2 : 93%

2) 검색+동적색인(무제한)

쓰레드 호출수 평균응답시간(ms) 최대응답시간(ms) TPS CPU 사용률(%) 동적색인 수 초당 색인
8 18,558 129 2329 61.8 Node1 : 72%
Node2 : 71%
3413500 11378
16 22,370 214 3419 74.4 Node1 : 96%
Node2 : 95%
2488000 8293

3) 검색+동적색인(초당 4000)

쓰레드 호출수 평균응답시간(ms) 최대응답시간(ms) TPS CPU 사용률(%) 동적색인 수 초당 색인
8 25,287 94 3936 84.2 Node1 : 71%
Node2 : 64%
1028000 3427
16 30,391 157 2802 101.2 Node1 : 95%
Node2 : 94%
964000 3213

FASTCAT-ELASITCSEARCH 비교

  • 위의 내용을 정리하여 비교하자만 우선 초당 요청량을 제한하여 호출했기 때문에 동적색인으로 인한 부하가 낮아지고 그에 따라 검색성능이 향상되었습니다. FASTCAT의 경우는 동적색인 부하량이 ElasticSearch보다 높아 검색성능에 더 큰 영향을 미치는 것을 확인할 수 있었습니다.
쓰레드 호출수   평균응답시간(ms)   최대응답시간(ms)   TPS   CPU 사용률(%)  
  FASTCAT ES FASTCAT ES FASTCAT ES FASTCAT ES FASTCAT ES
8 24,987 25,287 95 94 2099 3936 83 84 Node1 : 70%
Node2 : 53%
Node1 : 72%
Node2 : 71%
16 23,718 30,391 202 157 2510 2810 87 101 Node1 : 94%
Node2 : 95%
Node1 : 95%
Node2 : 94%

5. 결론

앞에 수행했던 테스트를 포함하여 이번 테스트로 두 검색엔진의 성능을 비교할 수 있었습니다. 실제 운영환경과 동일한 검색, 동적색인 호출시에 ElasticSearch가 FASTCAT의 검색처리량이 더 높음을 확인 할 수 있었으며 쿼리 튜닝이나 다른 방안을 통해 ElasticSearch 검색속도를 더 높일 수 있으면 기존 검색엔진보다 검색, 색인 성능 모두를 향상시킬 수 있을 것 같습니다.

이것으로 FASTCAT과 ELASTICSEARCH를 비교한 테스트를 마치겠습니다.