FASTCAT-ElasticSearch 테스트 - 검색+동적색인
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 |
[검색+동적색인 테스트 구성도]
호출용 노드에서 검색과 동적색인을 동시에 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를 비교한 테스트를 마치겠습니다.