Architecture

DMaaP Simulator


DMaap Simulator is a simple Spring Boot application, which exposes two endpoints. First endpoint (@PostMapping("/events/unauthenticated.SEC_FAULT_OUTPUT")) which receives fault events topic and second (@GetMapping("/summary")) which display events count and average processing time in milliseconds(depending on "startEpochMicrosec").

JMeter is generating the current epoch (current time) and updates this field:


Architecture


DMaap Simulator image:


DMaap Simulator supports VES collector in the Frankfurt release.

What is measured

JMeter test results & metrics

Ves metrics

K8s metrics

Results

Environment 1


Test scenarioDescriptionJMeter test results & metricsVes metricsK8s metrics

1_test_scenario_6_steps.jmx

  • 6.6RPS → 2.5min
  • 11.6RPS → 2.5min 
  • 23.3RPS → 2.5min
  •  33.3RPS → 2.5min
  • 50RPS → 2.5min
  • 66.6RPS → 2.5min




2_test_scenario_1k_rps.jmx

  • 1000RPS → 1s

2_test_scenario_2k_rps.jmx

  • 2000RPS → 1s

2_test_scenario_3k_rps.jmx

  • 3000RPS → 1s 

2_test_scenario_4k_rps.jmx
  • 4000RPS → 1s 

2_test_scenario_5k_rps.jmx

  • 5000RPS → 1s 

custom
  • 11.1RPS → 15min

custom
  • 22.2RPS → 15min

custom
  • 33.3RPS → 15min 

custom 
  • 44.4RPS → 15min


Environment 2


Test scenarioDescriptionJMeter test results & metricsVes metricsK8s metrics
custom
  • 11.1RPS → 1h

custom
  • 22.2RPS→ 30min

custom
  • 30RPS → 10min

custom
  • 35RPS → 10min

custom
  • 45RPS → 10min

custom
  • 50RPS → 10min

custom
  • 80RPS → 10min

custom
  • 120RPS → 5min

custom
  • 130RPS → 5min


Test scenarioDescriptionJMeter test results & metricsVes metricsVes additional metrics
custom
  • 11RPS → 2days

Presentation



Replacing Cambria with DMaaP Client

Presentation



Performance Tests with real DMaaP

Environment 

Ves with Dmaap client

3_test_scenario_50_rps_time_600.jmx50RPS → 10min

3_test_scenario_50_rps_time_600.jmx50RPS → 10min

3_test_scenario_50_rps_time_600.jmx50RPS → 10min

3_test_scenario_100_rps_time_600.jmx100RPS → 10min

3_test_scenario_100_rps_time_600.jmx100RPS → 10min

3_test_scenario_100_rps_time_600.jmx100RPS → 10min


Ves with Cambria client

Ves version :  1.9.1


3_test_scenario_50_rps_time_600.jmx50RPS → 10min

3_test_scenario_50_rps_time_600.jmx50RPS → 10min

3_test_scenario_50_rps_time_600.jmx50RPS → 10min

3_test_scenario_100_rps_time_600.jmx100RPS → 10min

3_test_scenario_100_rps_time_600.jmx100RPS → 10min

3_test_scenario_100_rps_time_600.jmx100RPS → 10min


Summary test results:

Environment 




Average and Max Sync Processing Time (Client → VES)Average VES Processing timeError Rate [%]Max CPU Usage [%]
VES with Dmaap50th percentile95th percentile99th percentile


50RPS → 10min122ms, 349ms181ms, 3.23s591ms, 4.43s91ms036
124ms, 515ms204ms, 4.27s609ms, 5.48s90ms042
121ms, 399ms177ms, 2.17s561ms, 5.2291ms030
100RPS → 10min274ms, 7.06570ms, 7.93s1.0s, 8.06s139ms0.05%72
574ms, 6,07s1,17s, 14.19s1.89s, 15.37s201ms091
291ms, 5.88s415.5ms, 6.45s922ms, 11.3s143ms078
VES with Cambria50th percentile95th percentile99th percentile


50RPS → 10min118ms, 520ms174ms, 2.10s571ms, 6.48s90ms048
122ms, 548ms230ms, 5.17s581ms, 5.54s88ms032
123ms, 557ms194ms, 2.50s676ms, 5.12s88ms042
100RPS → 10min301ms, 5.79s772ms, 16.97s1.16s, 17.08s153ms088
340ms, 7.13s636ms, 17.87s1.15s, 18.48s149ms076
307ms, 8.29s506ms, 9.44s855ms, 9.78s155ms088



Conclusion:

Results of performance tests for both VES collector client implementation (DMaap client and Cambria client) are very similar.

Max CPU usage, Error rate, Average VES processing time, average and max sync processing time(Client → Ves) are almost the same.


In Ves collector with DMaap client(100RPS for 10 min),  appeared an error with the connection pool. In that specific case, we had a connection poll set to 16 and we got an error that the connection poll limits have been reached (stack trace in attachment).

We have to handle that kind of error in code.