이번 포스팅에서는 실시간 분산 처리 시스템인 Storm과 CEP 처리 시스템인 Esper의 성능 테스트에 대해 적고자 한다. 지난 포스팅 중 Storm-Esper에 관한 연구 결과가 있으니 참조 바란다.

테스트 진행 구조상 어쩔수 없이 성능테스트에 Kafka까지 포함되었는데, Kafka 단일 테스트가 궁금하다면 여기를 참조하길 바란다.

이번 성능 테스트를 통해 이벤트 발생률과 양에 따른 Engine의 성능 변화분산 환경에서 노드 증가에 따른 성능 변화를 알아보고자 한다.


구조


이벤트가 Kafka로 들어가는 순간부터 이벤트가 Kafka를 통해 나오는 순간까지의 구간을 측정하였으며, Kafka로 이벤트를 보내고 받는 부분은 Performance Tester를 구현하여 사용하였다.

    * Kafka 단일 테스트는 여기 참조


테스트 환경


성능 테스트를 진행한 장비의 환경은 다음과 같다.


테스트 방법


먼저 이벤트 발생률과 양에 따른 Engine의 성능 변화를 알아보기 위해, 아래 (1)과 (2) 테스트를 진행하였다.

(1) 이벤트 발생 빈도

- 방법 : 이벤트가 발생하는 빈도를 0.01%, 25%, 50%, 75%, 100%로 증가시키며 TPS 측정

- 가설 : 이벤트 발생 빈도가 증가 할수록 성능 감소

(2) 이벤트 개수

- 방법 : 이벤트 개수를 50만개부터 250만개까지 50만개씩 증가시키며 증가시키며 TPS 측정 

- 가설 : 이벤트 개수가 증가해도 성능 일정


다음으로는 분산환경에서 노드 증가에 따른 성능 변화를 알아보기 위해, 아래 (3) 테스트를 진행하였다. 

(3) Worker 개

- 방법 : Worker 개수를 1부터 4까지 하나씩 증가시키며 TPS 측정

- 가설 : Worker 개수가 증가 할수록 성능 증가


Storm Topology 구성


(1) 이벤트 발생 빈도, (2) 이벤트 개수 테스트의 Topology 구성

(3) Worker 개수 테스트의 Topology 구성


테스트 결과


(1) 이벤트 발생 빈도

  • 고정 변
    1. 이벤트 개수 : 100만개
    2. Worker 개수 : 1개
  • 이벤트 발생 빈도가 증가할수록 성능은 감소한다는 가설과 일치


(2) 이벤트 개수

  • 고정변수
    1. 이벤트 발생 빈도 : 25%
    2. Worker 개수 : 1개
  • 이벤트 개수가 증가해도 성능은 일정하다는 가설과 일치


(3) Worker 개수

  • 고정 변수
    1. 이벤트 발생 빈도 : 50%
    2. 이벤트 개수 : 100만개
  • Worker 개수가 증가 할수록 성능은 증가한다는 가설과 일치한다.
  • 참고로 1-2 구간과 2-4 구간의 Throughput의 증가량이 다른 이유는 테스트에 사용된 장비의 성능이 일정하지 않기 때문이다.


결과 정리


테스트 모두 가설과 일치하는 결과가 나왔으며, 한번 더 간단히 정리하면 아래와 같다.

(1) 이벤트 발생 빈도

  이벤트 발생 빈도가 증가할수록 성능은 감소

(2) 이벤트 개수

  이벤트 개수가 증가해도 성능은 일정

(3) Worker 개수

  Worker 개수가 증가 할수록 성능은 증가

  


Reference 


  Storm    https://storm.apache.org/

  Esper     http://www.espertech.com/




Posted by minji7