================================================================================ CPU Intel(R) Core(TM) i9-13900K @ 5.5 GHz, performance governor CPU security patches all ON RAM 192 GB, DDR5 5600 MT/s SSD 2 TB NVMe SSD UFW Firewall ON OS Ubuntu 24.04 LTS (with all security updates) FDs prlimit --pid=$$ --nofile=1048576 TST LITESPEED-preferred IBM Apache Benchmark (AB) https://www.litespeedtech.com/support/wiki/doku.php/litespeed_wiki:faq:performing-a-benchmark -------------------------------------------------------------------------------- Why and how NGINX has created and promoted its wrk benchmarking tool: A decade ago G-WAN was using Lighty's tool. This tool was faster than wrk despite wrk excluding the UPFRONT ESTABLISHMENT OF ALL CONNECTIONS to a server BEFORE SENDING A FIRST REQUEST (a world premiere: all other tools were timing the whole process, not just a part of it). NGINX wrk might claim that they have introduced this method to focus on "many idle connections" (their mantra published ab nauseam on thousands of blogs) but... timing the server's "accept step" would not have harmed those tests. Reality is much simpler: as compared to G-WAN, NGINX was not accepting client connections quickly - hence the exclusion by NGINX wrk of the time NGINX took to register many new clients. Since 2009 G-WAN receives DDoS attacks either establishing connections and not sending requests - or slowly sending them in small parts, to exhaust server's OS kernel resources - see: http://gwan.com/blog/20250507.html The only way to disable the (well documented) G-WAN DDoS shield was to ENLARGE the G-WAN connection closure timeouts - A STEP REQUIRED FOR WRK BENCHMARKS but never used nor disclosed by NGINX when comparing their server to G-WAN. NGINX wrk has other by-design issues, see: http://gwan.com/blog/20250417.html - issues that have been corrected by the slower but far more accurate wrk2 (used by all the new G-WAN benchmarks). ================================================================================ NGINX 1.24.0 (32 workers) => 92k RPS (LITESPEED: 121k RPS, G-WAN: 111k RPS) G-WAN time taken for tests: 8.974 seconds, 0 failed requests, 111k RPS LITESPEED time taken for tests: 8.262 seconds, 99 failed requests, 121k RPS NGINX time taken for tests: 10.894 seconds, 0 failed requests, 92k RPS ^^ ^^^^ Notes: with 99 failed requests, LITESPEED is less stable than NGINX & G-WAN (further AB and wrk2 tests confirm LITESPEED's inclination for errors). -------------------------------------------------------------------------------- ab -n 1000000 -c 1 -k http://127.0.0.1:80/100.html This is ApacheBench, Version 2.3 <$Revision: 1903618 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking 127.0.0.1 (be patient) Completed 100000 requests Completed 200000 requests Completed 300000 requests Completed 400000 requests Completed 500000 requests Completed 600000 requests Completed 700000 requests Completed 800000 requests Completed 900000 requests Completed 1000000 requests Finished 1000000 requests Server Software: nginx/1.24.0 Server Hostname: 127.0.0.1 Server Port: 80 Document Path: /100.html Document Length: 100 bytes Concurrency Level: 1 Time taken for tests: 10.894 seconds Complete requests: 1000000 Failed requests: 0 Keep-Alive requests: 999000 Total transferred: 345995000 bytes HTML transferred: 100000000 bytes Requests per second: 91792.29 [#/sec] (mean) Time per request: 0.011 [ms] (mean) Time per request: 0.011 [ms] (mean, across all concurrent requests) Transfer rate: 31015.31 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.0 0 0 Processing: 0 0 0.0 0 9 Waiting: 0 0 0.0 0 9 Total: 0 0 0.0 0 9 Percentage of the requests served within a certain time (ms) 50% 0 66% 0 75% 0 80% 0 90% 0 95% 0 98% 0 99% 0 100% 9 (longest request) ================================================================================