================================================================================ 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 NGINX's wrk2, see why here: http://gwan.com/blog/20250417.html ================================================================================ G-WAN 17.08.18 => [106k-242m] RPS, 0 socket errors -------------------------------------------------------------------------------- RPS by number of concurrent clients: 1: 106k RPS 1k: 1.2m RPS 10k: 242m RPS --> G-WAN peak RPS (LITESPEED and NGINX: peak @ 1k clients) 20k: 113m RPS 30k: 74m RPS 40k: 53m RPS -------------- Total 425m RPS (LITESPEED: 1,561k RPS, NGINX: 2,561k RPS) ================================================================================ Before the test -------------------------------------------------------------------------------- - running gwan process(es): PID THRDS %CPU VIRT RSS SHRD EXE 168179 17 0.0 4.8 MB 768.0 KB 0.0 KB /opt/gwan/gwan :8080 ======== -------------------------------------------------------------------------------- After the test -------------------------------------------------------------------------------- - running gwan process(es): PID THRDS %CPU VIRT RSS SHRD EXE 360294 45001 337.1 4.1 GB 668.0 MB 0.0 KB /opt/gwan/gwan :8080 ======== ================================================================================ wrk2 -t1 -c1 -R100m "http://127.0.0.1:8080/100.html" Initialised 1 threads in 0 ms. Running 10s test @ http://127.0.0.1:8080/100.html 1 threads and 1 connections Thread Stats Avg Stdev Max +/- Stdev Latency 4.99s 2.88s 9.99s 0.02% Req/Sec -nan -nan 0.00 0.00% 1063415 requests in 10.00s, 335.68MB read Requests/sec: 106341.76 Transfer/sec: 33.57MB ================================================================================ wrk2 -t1k -c1k -R10m "http://127.0.0.1:8080/100.html" Initialised 1000 threads in 53 ms. Running 10s test @ http://127.0.0.1:8080/100.html 1000 threads and 1000 connections Thread Stats Avg Stdev Max +/- Stdev Latency 4.33s 2.53s 9.18s 0.04% Req/Sec -nan -nan 0.00 0.00% 11853293 requests in 9.81s, 3.65GB read Requests/sec: 1208588.59 Transfer/sec: 381.51MB ================================================================================ wrk2 -t10k -c10k -R1m "http://127.0.0.1:8080/100.html" Initialised 10000 threads in 2243 ms. Running 10s test @ http://127.0.0.1:8080/100.html 10000 threads and 10000 connections Thread Stats Avg Stdev Max +/- Stdev Latency 3.04s 2.50s 9.76s 0.02% Req/Sec -nan -nan 0.00 0.00% 7809616 requests in 32.31ms, 2.41GB read Requests/sec: 241708944.60 Transfer/sec: 74.51GB ================================================================================ wrk2 -t20k -c20k -R150m "http://127.0.0.1:8080/100.html" Initialised 20000 threads in 8302 ms. Running 10s test @ http://127.0.0.1:8080/100.html 20000 threads and 20000 connections Thread Stats Avg Stdev Max +/- Stdev Latency 2.78s 2.39s 9.56s 0.02% Req/Sec -nan -nan 0.00 0.00% 7639409 requests in 67.56ms, 2.35GB read Requests/sec: 113084286.88 Transfer/sec: 34.86GB ================================================================================ wrk2 -t30k -c30k -R100m "http://127.0.0.1:8080/100.html" Initialised 30000 threads in 18132 ms. Running 10s test @ http://127.0.0.1:8080/100.html 30000 threads and 30000 connections Thread Stats Avg Stdev Max +/- Stdev Latency 2.70s 2.34s 9.36s 0.02% Req/Sec -nan -nan 0.00 0.00% 7653726 requests in 103.85ms, 2.36GB read Requests/sec: 73697688.08 Transfer/sec: 22.72GB ================================================================================ wrk2 -t40k -c40k -R100m "http://127.0.0.1:8080/100.html" Initialised 40000 threads in 31648 ms. Running 10s test @ http://127.0.0.1:8080/100.html 40000 threads and 40000 connections Thread Stats Avg Stdev Max +/- Stdev Latency 2.67s 2.30s 9.20s 0.02% Req/Sec -nan -nan 0.00 0.00% 7561252 requests in 142.66ms, 2.33GB read Requests/sec: 53001535.11 Transfer/sec: 16.34GB ================================================================================ Conclusion -------------------------------------------------------------------------------- G-WAN, despite on-demand (rather than upfront) allocation of RAM and process/thread workers, has performed exceptionally well on low and high concurrencies (without any socket error). Compared to NGINX, G-WAN is faster with and WITHOUT CONCURRENCY, and much faster (without errors) on the [1k-40k] concurrency range (G-WAN being up to 3 orders of magnitude faster than NGINX). Compared to LITESPEED, G-WAN is as fast WITHOUT CONCURRENCY, and much faster (without errors) on the [1k-40k] concurrency range (G-WAN being up to 3 orders of magnitude faster than LITESPEED). At startup, G-WAN consumed 170x less RAM than NGINX and 71x less RAM than LITESPEED. At the test's end, G-WAN has consumed 4x more RAM than NGINX and LITESPEED while consistantly delivering hundreds of MILLION RPS instead of NGINX and LITESPEED's hundreds of THOUSAND RPS. As a backend-server (on localhost or a LAN) G-WAN has demonstrated its value. The next step will be (high-latency) Internet benchmarks. ================================================================================ Answer to the "caching remark" done by an anonymous reader: -------------------------------------------------------------------------------- At the time of this test, G-WAN did not (yet) implement caching (used by NGINX and LITESPEED). As a result, future versions of G-WAN might be faster (and/or use less CPU). Without caching, the size of a served website doesn't matter - if you fetch only one file, like in the benchmarks above. NGINX's "Welcome" site (2 files, 715 bytes) was much smaller than LITESPEED's (21 files, 229.4 KB) but it cannot justify the factor 2 of performance seen in the favor of NGINX. G-WAN actually used a local copy of gwan.com (1,642 files, and 236 MB) - a much larger site than NGINX and LITEPEED, but it could not have gotten any advantage at using a 1-file site (since G-WAN did not support caching yet). All the G-WAN tests were done with 5 hosts (1 main and 4 virtual hosts) and 2 alias sites - a setup that would have had detrimental effects on NGINX and LITESPEED (but not for G-WAN). Further, even a 1-page site would not let NGINX or LITESPEED run at hundreds of million RPS: they didn't even reach 1m RPS. ================================================================================