Realistic Apisix 3.11 Performance Benchmark
- Kalidass Mookkaiah
- Dec 16, 2024
- 2 min read
Updated: Apr 25
Why Realistic Performance Results matters
Apisix does publishes a performance benchmark in the documentation. Which is a fantastic result to know. Its documented here apisix benchmark
This benchmark does not work for many clients. Two of the top reasons why a realistic performance is worth knowing for clients.
Apisix benchmark was run on GCP, single dedicated instance of n1-highcpu-8 which has 8 vCPUs and 7.2 GB memory. Clients often allocate 2 vCPU and 4 GiB memory for instances on cloud providers. These are significantly different machines in terms of compute and performance.
Client often allocate smaller machines per node. Clients often look at scaling out apisix Instances rather than scaling up apisix Instances. So being closer to 2 vCPU and 4 GiB memory is more realistic performance result.
The benchmark was run using HTTP protocol. Using HTTP protocol in any realistic environment deployment by client is near improbable.
There is performance difference between HTTP protocol and HTTPS protocol, and the difference is not trivial.
Realistic Config
Listed is realistic Apisix machine config used for this benchmark results
CPU | 2 CPU of Intel(R) Xeon(R) CPU @ 2.20GHz |
Memory | 4 GiB |
Cloud Provider | GCP |
Machine Type | e2-medium VM |
OS | Debian 11 Bullseye |
Low Latency and Highest Throughput Performance Target
The following targets is set and configured
2 threads to make requests to match the 2 CPUs
10 concurrent connections to run the test
Maximum average latency allowed is 5 ms
Ignoring the max Latency and Standard Deviations
What is the maximum throughput that can be extracted from the compute allocated with the performance targets defined above from apisix.
Apisix Configuration
1 upstream of roundrobin type
1 route
No plugins
ulimit set to 4096
access log=off
apisix was configuration in standalone mode and configuration was loaded using apisix.yaml
Network Setup
The load runner, apisix Instance and Backend were hosted in the same GCP region and with in the same network.
Application Config
Backend
A HTTPS endpoint hosting a REST API with a GET
Returning a simple json response with very few characters. Similar to
{"hello":"world"}
apisix
apisix hosts a HTTPS endpoint to service as a REST API endpoint
apisix to backend is configured with HTTPs protocol
Load Runner
Load runner calls apisix endpoint using HTTPS
Performance Metrics
Number of Requests processed per Minute | Number of Requests Processed per Second | Average Latency |
648,540.50 | 10809 | 4.99ms |
What does it Mean
This is a measure of what is the maximum that could be extracted from a realistic compute allocated that is closer to typical customer deployment.
This is a point of reference for customers to use.
Comments