During each release, we execute various automated performance test scenarios and publish the results.
Test Scenarios | Description |
---|---|
Direct Proxy | Passthrough proxy service |
CBR Proxy | Routing the message based on the content of the message body |
XSLT Proxy | Having XSLT transformations in request and response paths |
CBR SOAP Header Proxy | Routing the message based on a SOAP header in the message payload |
CBR Transport Header Proxy | Routing the message based on an HTTP header in the message |
Secure Proxy | Secured proxy service |
XSLT Enhanced Proxy | Having enhanced, Fast XSLT transformations in request and response paths |
Our test client is Apache JMeter. We test each scenario for a fixed duration of time. We split the test results into warmup and measurement parts and use the measurement part to compute the performance metrics.
Test scenarios use a Netty based back-end service which echoes back any request posted to it after a specified period of time.
We run the performance tests under different numbers of concurrent users, message sizes (payloads) and back-end service delays.
The main performance metrics:
- Throughput: The number of requests that the WSO2 Enterprise Micro Integrator processes during a specific time interval (e.g. per second).
- Response Time: The end-to-end latency for an operation of invoking a service in WSO2 Enterprise Micro Integrator . The complete distribution of response times was recorded.
In addition to the above metrics, we measure the load average and several memory-related metrics.
The following are the test parameters.
Test Parameter | Description | Values |
---|---|---|
Scenario Name | The name of the test scenario. | Refer to the above table. |
Heap Size | The amount of memory allocated to the application | 2G |
Concurrent Users | The number of users accessing the application at the same time. | 100, 200, 500 |
Message Size (Bytes) | The request payload size in Bytes. | 1024, 10240 |
Back-end Delay (ms) | The delay added by the Back-end service. | 0, 1000 |
The duration of each test is 900 seconds. The warm-up period is 300 seconds. The measurement results are collected after the warm-up period.
The performance tests were executed on 3 AWS CloudFormation stacks.
System information for WSO2 Enterprise Micro Integrator in 1st AWS CloudFormation stack.
Class | Subclass | Description | Value |
---|---|---|---|
AWS | EC2 | AMI-ID | ami-095192256fe1477ad |
AWS | EC2 | Instance Type | c5.xlarge |
System | Processor | CPU(s) | 4 |
System | Processor | Thread(s) per core | 2 |
System | Processor | Core(s) per socket | 2 |
System | Processor | Socket(s) | 1 |
System | Processor | Model name | Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz |
System | Memory | BIOS | 64 KiB |
System | Memory | System memory | 7807988 KiB |
System | Storage | Block Device: nvme0n1 | 8G |
Operating System | Distribution | Release | Ubuntu 18.04.2 LTS |
Operating System | Distribution | Kernel | Linux ip-10-0-1-253 4.15.0-1041-aws #43-Ubuntu SMP Thu Jun 6 13:39:11 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux |
System information for WSO2 Enterprise Micro Integrator in 2nd AWS CloudFormation stack. |
Class | Subclass | Description | Value |
---|---|---|---|
AWS | EC2 | AMI-ID | ami-095192256fe1477ad |
AWS | EC2 | Instance Type | c5.xlarge |
System | Processor | CPU(s) | 4 |
System | Processor | Thread(s) per core | 2 |
System | Processor | Core(s) per socket | 2 |
System | Processor | Socket(s) | 1 |
System | Processor | Model name | Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz |
System | Memory | BIOS | 64 KiB |
System | Memory | System memory | 7807996 KiB |
System | Storage | Block Device: nvme0n1 | 8G |
Operating System | Distribution | Release | Ubuntu 18.04.2 LTS |
Operating System | Distribution | Kernel | Linux ip-10-0-1-96 4.15.0-1041-aws #43-Ubuntu SMP Thu Jun 6 13:39:11 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux |
System information for WSO2 Enterprise Micro Integrator in 3rd AWS CloudFormation stack. |
Class | Subclass | Description | Value |
---|---|---|---|
AWS | EC2 | AMI-ID | ami-095192256fe1477ad |
AWS | EC2 | Instance Type | c5.xlarge |
System | Processor | CPU(s) | 4 |
System | Processor | Thread(s) per core | 2 |
System | Processor | Core(s) per socket | 2 |
System | Processor | Socket(s) | 1 |
System | Processor | Model name | Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz |
System | Memory | BIOS | 64 KiB |
System | Memory | System memory | 7807996 KiB |
System | Storage | Block Device: nvme0n1 | 8G |
Operating System | Distribution | Release | Ubuntu 18.04.2 LTS |
Operating System | Distribution | Kernel | Linux ip-10-0-1-243 4.15.0-1041-aws #43-Ubuntu SMP Thu Jun 6 13:39:11 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux |
The following are the measurements collected from each performance test conducted for a given combination of test parameters.
Measurement | Description |
---|---|
Error % | Percentage of requests with errors |
Average Response Time (ms) | The average response time of a set of results |
Standard Deviation of Response Time (ms) | The “Standard Deviation” of the response time. |
99th Percentile of Response Time (ms) | 99% of the requests took no more than this time. The remaining samples took at least as long as this |
Throughput (Requests/sec) | The throughput measured in requests per second. |
Average Memory Footprint After Full GC (M) | The average memory consumed by the application after a full garbage collection event. |
The following is the summary of performance test results collected for the measurement period.
Scenario Name | Heap Size | Concurrent Users | Message Size (Bytes) | Back-end Service Delay (ms) | Error % | Throughput (Requests/sec) | Average Response Time (ms) | Standard Deviation of Response Time (ms) | 99th Percentile of Response Time (ms) | WSO2 Enterprise Micro Integrator GC Throughput (%) | Average WSO2 Enterprise Micro Integrator Memory Footprint After Full GC (M) |
---|---|---|---|---|---|---|---|---|---|---|---|
CBR Proxy | 2G | 100 | 1024 | 0 | 0 | 4193.15 | 23.71 | 26 | 112 | ||
CBR Proxy | 2G | 100 | 1024 | 1000 | 0 | 99.68 | 1002.79 | 6.98 | 1039 | ||
CBR Proxy | 2G | 100 | 10240 | 0 | 0 | 771.82 | 129.39 | 53.41 | 279 | ||
CBR Proxy | 2G | 100 | 10240 | 1000 | 0 | 99.39 | 1003.82 | 5.45 | 1031 | ||
CBR Proxy | 2G | 200 | 1024 | 0 | 0 | 3996.91 | 49.94 | 38.81 | 186 | ||
CBR Proxy | 2G | 200 | 1024 | 1000 | 0 | 199.31 | 1002.51 | 5.25 | 1015 | ||
CBR Proxy | 2G | 200 | 10240 | 0 | 0 | 745.34 | 268.43 | 98.85 | 523 | ||
CBR Proxy | 2G | 200 | 10240 | 1000 | 0 | 198.48 | 1006.25 | 11.1 | 1063 | ||
CBR Proxy | 2G | 500 | 1024 | 0 | 0 | 3991.43 | 124.88 | 62.19 | 309 | ||
CBR Proxy | 2G | 500 | 1024 | 1000 | 0 | 497.61 | 1003 | 5.73 | 1023 | ||
CBR Proxy | 2G | 500 | 10240 | 0 | 0 | 718.6 | 695.72 | 240.53 | 1327 | ||
CBR Proxy | 2G | 500 | 10240 | 1000 | 0 | 495.09 | 1008.07 | 14.23 | 1079 | ||
CBR SOAP Header Proxy | 2G | 100 | 1024 | 0 | 0 | 4998.69 | 19.9 | 23.53 | 102 | ||
CBR SOAP Header Proxy | 2G | 100 | 1024 | 1000 | 0 | 99.7 | 1002.37 | 3.62 | 1011 | ||
CBR SOAP Header Proxy | 2G | 100 | 10240 | 0 | 0 | 1150.69 | 86.63 | 149.55 | 188 | ||
CBR SOAP Header Proxy | 2G | 100 | 10240 | 1000 | 0 | 99.52 | 1002.96 | 7.09 | 1019 | ||
CBR SOAP Header Proxy | 2G | 200 | 1024 | 0 | 0 | 4648.84 | 42.93 | 35.78 | 173 | ||
CBR SOAP Header Proxy | 2G | 200 | 1024 | 1000 | 0 | 199.09 | 1003.28 | 7.46 | 1047 | ||
CBR SOAP Header Proxy | 2G | 200 | 10240 | 0 | 0 | 1108.65 | 180.34 | 66.63 | 363 | ||
CBR SOAP Header Proxy | 2G | 200 | 10240 | 1000 | 0 | 199.06 | 1003.99 | 8.37 | 1047 | ||
CBR SOAP Header Proxy | 2G | 500 | 1024 | 0 | 0 | 4581.33 | 109.02 | 55.17 | 281 | ||
CBR SOAP Header Proxy | 2G | 500 | 1024 | 1000 | 0 | 497.73 | 1003.04 | 6.97 | 1031 | ||
CBR SOAP Header Proxy | 2G | 500 | 10240 | 0 | 0 | 1099.81 | 454.76 | 150.92 | 831 | ||
CBR SOAP Header Proxy | 2G | 500 | 10240 | 1000 | 0 | 496.66 | 1004.92 | 9.49 | 1055 | ||
CBR Transport Header Proxy | 2G | 100 | 1024 | 0 | 0 | 7667.98 | 12.93 | 18.25 | 83 | ||
CBR Transport Header Proxy | 2G | 100 | 1024 | 1000 | 0 | 99.57 | 1003.09 | 9.44 | 1063 | ||
CBR Transport Header Proxy | 2G | 100 | 10240 | 0 | 0 | 3936.6 | 25.19 | 21.58 | 74 | ||
CBR Transport Header Proxy | 2G | 100 | 10240 | 1000 | 0 | 99.55 | 1003.08 | 8.18 | 1055 | ||
CBR Transport Header Proxy | 2G | 200 | 1024 | 0 | 0 | 7306.16 | 27.29 | 27.25 | 109 | ||
CBR Transport Header Proxy | 2G | 200 | 1024 | 1000 | 0 | 199.12 | 1004.3 | 12.55 | 1087 | ||
CBR Transport Header Proxy | 2G | 200 | 10240 | 0 | 0 | 3691.37 | 54.05 | 26.79 | 101 | ||
CBR Transport Header Proxy | 2G | 200 | 10240 | 1000 | 0 | 199.18 | 1003.36 | 39.14 | 1039 | ||
CBR Transport Header Proxy | 2G | 500 | 1024 | 0 | 0 | 7307.35 | 68.21 | 40.27 | 192 | ||
CBR Transport Header Proxy | 2G | 500 | 1024 | 1000 | 0 | 497.78 | 1003.64 | 8.77 | 1055 | ||
CBR Transport Header Proxy | 2G | 500 | 10240 | 0 | 0 | 3633.57 | 137.45 | 42.04 | 254 | ||
CBR Transport Header Proxy | 2G | 500 | 10240 | 1000 | 0 | 497.33 | 1003.79 | 7.65 | 1039 | ||
Direct Proxy | 2G | 100 | 1024 | 0 | 0 | 7837.58 | 12.68 | 17.62 | 79 | ||
Direct Proxy | 2G | 100 | 1024 | 1000 | 0 | 99.64 | 1003 | 8.71 | 1055 | ||
Direct Proxy | 2G | 100 | 10240 | 0 | 0 | 3965.49 | 25.11 | 21.09 | 72 | ||
Direct Proxy | 2G | 100 | 10240 | 1000 | 0 | 99.41 | 1004.16 | 12.28 | 1087 | ||
Direct Proxy | 2G | 200 | 1024 | 0 | 0 | 7443.85 | 26.78 | 27.17 | 108 | ||
Direct Proxy | 2G | 200 | 1024 | 1000 | 0 | 199.16 | 1003.04 | 7.64 | 1055 | ||
Direct Proxy | 2G | 200 | 10240 | 0 | 0 | 3190.83 | 54.78 | 85.69 | 103 | ||
Direct Proxy | 2G | 200 | 10240 | 1000 | 0 | 199.22 | 1002.65 | 5.92 | 1015 | ||
Direct Proxy | 2G | 500 | 1024 | 0 | 0 | 7620.6 | 65.42 | 40.57 | 195 | ||
Direct Proxy | 2G | 500 | 1024 | 1000 | 0 | 497.62 | 1003.87 | 8.92 | 1055 | ||
Direct Proxy | 2G | 500 | 10240 | 0 | 0 | 3723.93 | 133.9 | 41.81 | 249 | ||
Direct Proxy | 2G | 500 | 10240 | 1000 | 0 | 497.5 | 1003.97 | 9.2 | 1055 | ||
Secure Proxy | 2G | 100 | 1024 | 0 | 0 | 252.37 | 396 | 264.07 | 1207 | ||
Secure Proxy | 2G | 100 | 1024 | 1000 | 0 | 98.89 | 1009.88 | 11.75 | 1071 | ||
Secure Proxy | 2G | 100 | 10240 | 0 | 0 | 141.6 | 705.74 | 235.36 | 1351 | ||
Secure Proxy | 2G | 100 | 10240 | 1000 | 0 | 98.13 | 1017.76 | 18.31 | 1103 | ||
Secure Proxy | 2G | 200 | 1024 | 0 | 0 | 245.05 | 815.38 | 549.46 | 2447 | ||
Secure Proxy | 2G | 200 | 1024 | 1000 | 0 | 197.95 | 1008.92 | 4.29 | 1031 | ||
Secure Proxy | 2G | 200 | 10240 | 0 | 0 | 134.56 | 1484.22 | 472.67 | 2767 | ||
Secure Proxy | 2G | 200 | 10240 | 1000 | 0 | 131.86 | 1513.16 | 205.22 | 2127 | ||
Secure Proxy | 2G | 500 | 1024 | 0 | 0 | 236.31 | 2109.74 | 1201.37 | 5727 | ||
Secure Proxy | 2G | 500 | 1024 | 1000 | 0 | 243.52 | 2046.82 | 707.37 | 4223 | ||
Secure Proxy | 2G | 500 | 10240 | 0 | 0 | 118.87 | 4186.85 | 1163.2 | 7327 | ||
Secure Proxy | 2G | 500 | 10240 | 1000 | 0 | 116 | 4295.1 | 1138.45 | 7295 | ||
XSLT Enhanced Proxy | 2G | 100 | 1024 | 0 | 0 | 3650.04 | 27.33 | 29.22 | 123 | ||
XSLT Enhanced Proxy | 2G | 100 | 1024 | 1000 | 0 | 99.62 | 1003 | 6.83 | 1039 | ||
XSLT Enhanced Proxy | 2G | 100 | 10240 | 0 | 0 | 594.05 | 168.28 | 65.56 | 349 | ||
XSLT Enhanced Proxy | 2G | 100 | 10240 | 1000 | 0 | 99.29 | 1005.16 | 11.47 | 1071 | ||
XSLT Enhanced Proxy | 2G | 200 | 1024 | 0 | 0 | 3530.38 | 56.58 | 42.33 | 213 | ||
XSLT Enhanced Proxy | 2G | 200 | 1024 | 1000 | 0 | 199.36 | 1002.94 | 6.86 | 1019 | ||
XSLT Enhanced Proxy | 2G | 200 | 10240 | 0 | 0 | 575.4 | 347.72 | 129.5 | 699 | ||
XSLT Enhanced Proxy | 2G | 200 | 10240 | 1000 | 0 | 198.85 | 1003.92 | 3.71 | 1019 | ||
XSLT Enhanced Proxy | 2G | 500 | 1024 | 0 | 0 | 3381.97 | 147.54 | 77.27 | 409 | ||
XSLT Enhanced Proxy | 2G | 500 | 1024 | 1000 | 0 | 497.75 | 1003.49 | 7.13 | 1031 | ||
XSLT Enhanced Proxy | 2G | 500 | 10240 | 0 | 0 | 584.28 | 855.08 | 294.21 | 1655 | ||
XSLT Enhanced Proxy | 2G | 500 | 10240 | 1000 | 0 | 489.56 | 1019.83 | 24.76 | 1111 | ||
XSLT Proxy | 2G | 100 | 1024 | 0 | 0 | 2055.38 | 48.52 | 38.24 | 199 | ||
XSLT Proxy | 2G | 100 | 1024 | 1000 | 0 | 99.46 | 1003.64 | 9.5 | 1063 | ||
XSLT Proxy | 2G | 100 | 10240 | 0 | 0 | 305.72 | 327.15 | 159.02 | 799 | ||
XSLT Proxy | 2G | 100 | 10240 | 1000 | 0 | 99.25 | 1006.74 | 3.86 | 1031 | ||
XSLT Proxy | 2G | 200 | 1024 | 0 | 0 | 1977.86 | 101.04 | 53.14 | 289 | ||
XSLT Proxy | 2G | 200 | 1024 | 1000 | 0 | 198.97 | 1003.8 | 8.66 | 1047 | ||
XSLT Proxy | 2G | 200 | 10240 | 0 | 0 | 295.63 | 676.43 | 297.06 | 1535 | ||
XSLT Proxy | 2G | 200 | 10240 | 1000 | 0 | 198.3 | 1007.32 | 4.65 | 1039 | ||
XSLT Proxy | 2G | 500 | 1024 | 0 | 0 | 1889.4 | 264.24 | 106.53 | 587 | ||
XSLT Proxy | 2G | 500 | 1024 | 1000 | 0 | 497.38 | 1003.83 | 6.83 | 1039 | ||
XSLT Proxy | 2G | 500 | 10240 | 0 | 0 | 278.11 | 1794.87 | 712.76 | 3807 | ||
XSLT Proxy | 2G | 500 | 10240 | 1000 | 0 | 270.69 | 1842.3 | 393.75 | 3007 |