NGINX tests were performed on bare-metal single socket servers with equivalent memory, networking and storage configurations for each of the platforms shown. The processors tested here are: AMD EPYC 7763 "Milan"; Intel Xeon 8380 "Ice Lake"; Ampere Altra Q80-30; Ampere Altra Max M128-30.
The NGINX test is an approximation of a more real-world scenario for evaluating the efficacy of the NGINX web front end. It includes the additional processing elements of cryptography (https), compression (Brotli) and scripted language processing (Lua). These notes describe the test in more detail.
An open-source http benchmarking tool, wrk was used as the load generator. The wrk application running on the client system generates simultaneous HTTP requests over HTTPS connections to NGINX running on the target system. The test is configured to run with multiple threads and connections.
On the server side, NGINX is configured to serve static HTML file over https protocol using Brotli compression (quality 5). The server redirects the incoming request URL using LuaJIT, which does all the regex processing. In order to support the additional functionalities, nginx was compiled with HTTP SSL module, openssl, Brottli compression and nginx-lua modules. The source code version of nginx 1.15.4 and wrk v4.10 versions are used for this benchmarking.
The load generator wrk was configured to run with 96 clients and connections increasing from 100 to 500 in steps of 100 to observe the impact on throughput and p99 latency. We measure throughput, Requests Per Second (RPS) under SLA of 10ms p99 latency. Each test was run for 120 seconds and repeated at least 3 times for taking the average RPS and p99 across multiple runs. Little to no run-to-run variation in RPS or p99 latencies was observed.