Skip to content

Zix 0.4.x rc3 http#885

Merged
MDA2AV merged 5 commits into
MDA2AV:mainfrom
prothegee:zix-0.4.x-rc3-http
Jun 18, 2026
Merged

Zix 0.4.x rc3 http#885
MDA2AV merged 5 commits into
MDA2AV:mainfrom
prothegee:zix-0.4.x-rc3-http

Conversation

@prothegee

@prothegee prothegee commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Description

Bump the zix entry to 0.4.x-rc3 (HTTP/1.1 scope).

Update:

  • Attempt to tune both the epoll and io_uring dispatch models (connection teardown and response buffering) ahead of the 0.4.x release. Handlers and routes unchanged.

Required to call from HttpArena:

  • /benchmark -f zix
  • /benchmark -f zix --save

Result benchmark:

  • epoll
  • io_uring

Submitting:

  • io_uring.

Important:

  • double check before submitting final result for meta info.

PR Commands — comment on this PR to trigger (requires collaborator approval):

Command Description
/benchmark -f <framework> Run all benchmark tests
/benchmark -f <framework> -t <test> Run a specific test
/benchmark -f <framework> --save Run and save results (updates leaderboard on merge)

Always specify -f <framework>. Results are automatically compared against the current leaderboard.


Run benchmarks locally

You can validate and benchmark your framework locally with the lite script — no CPU pinning, fixed connection counts, all load generators run in Docker.

./scripts/validate.sh <framework>
./scripts/benchmark-lite.sh <framework> baseline
./scripts/benchmark-lite.sh --load-threads 4 <framework>

Requirements: Docker Engine on Linux. Load generators (gcannon, h2load, h2load-h3, wrk, ghz) are built as self-contained Docker images on first run.

@prothegee

Copy link
Copy Markdown
Contributor Author

Testing zix HTTP/1.1 scope with epoll.

@prothegee

Copy link
Copy Markdown
Contributor Author

/benchmark -f zix

@github-actions

Copy link
Copy Markdown
Contributor

👋 /benchmark request received. A collaborator will review and approve the run.

This was referenced Jun 17, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: zix | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 3,705,081 6463.8% 342MiB +0.9% ~0%
baseline 4096 3,729,529 6609.9% 395MiB +2.0% ~0%
pipelined 512 49,978,406 6479.7% 341MiB +0.9% ~0%
pipelined 4096 50,275,436 6568.3% 396MiB +1.5% ~0%
limited-conn 512 2,576,612 5753.9% 485MiB +1.6% +0.6%
limited-conn 4096 2,778,183 6215.1% 1.5GiB +1.1% ~0%
json 4096 2,419,331 6228.2% 1.3GiB +1.0% +8.3%
upload 32 8,411 1063.2% 341MiB +0.3% +1.2%
upload 256 6,531 914.4% 367MiB -2.5% -3.4%
static 1024 2,037,278 5586.6% 354MiB ~0% +0.9%
static 4096 2,048,629 5608.1% 415MiB +0.6% -0.5%
static 6800 1,994,802 5381.4% 500MiB +0.5% +0.8%
Full log

[run 3/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     256 (4/thread)
  Pipeline:  1
  Req/conn:  5
  Templates: 4
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   39.01ms   39.50ms   43.00ms   45.30ms   47.00ms

  32565 requests in 5.02s, 32571 responses
  Throughput: 6.49K req/s
  Bandwidth:  451.24KB/s
  Status codes: 2xx=32571, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 32571 / 32571 responses (100.0%)
  Reconnects: 6536
  Per-template: 8141,8142,8144,8144
  Per-template-ok: 8141,8142,8144,8144
[info] CPU 882.1% | Mem 380MiB

=== Best: 6531 req/s (CPU: 914.4%, Mem: 367MiB) ===
[info] input BW: 51.80GB/s (avg template: 8516680 bytes)
[info] saved results/upload/256/zix.json
httparena-bench-zix
httparena-bench-zix
[info] skip: zix does not subscribe to api-4
[info] skip: zix does not subscribe to api-16

==============================================
=== zix / static / 1024c (tool=wrk) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
Running 5s test @ http://localhost:8080
  64 threads and 1024 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   373.16us    1.15ms  32.74ms   99.41%
    Req/Sec    31.98k     1.21k   39.86k    97.12%
  10386513 requests in 5.10s, 158.23GB read
Requests/sec: 2036400.28
Transfer/sec:     31.02GB
[info] CPU 5538.9% | Mem 347MiB

[run 2/3]
Running 5s test @ http://localhost:8080
  64 threads and 1024 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   301.15us  114.66us   4.16ms   71.60%
    Req/Sec    31.91k   666.05    38.77k    97.70%
  10363968 requests in 5.10s, 157.88GB read
Requests/sec: 2031954.56
Transfer/sec:     30.95GB
[info] CPU 5591.1% | Mem 351MiB

[run 3/3]
Running 5s test @ http://localhost:8080
  64 threads and 1024 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   301.97us  114.43us   3.63ms   70.25%
    Req/Sec    32.00k   572.85    37.82k    96.75%
  10390970 requests in 5.10s, 158.29GB read
Requests/sec: 2037278.12
Transfer/sec:     31.04GB
[info] CPU 5586.6% | Mem 354MiB

=== Best: 2037278 req/s (CPU: 5586.6%, Mem: 354MiB) ===
[info] saved results/static/1024/zix.json
httparena-bench-zix
httparena-bench-zix

==============================================
=== zix / static / 4096c (tool=wrk) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
Running 5s test @ http://localhost:8080
  64 threads and 4096 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.13ms    0.95ms  40.55ms   98.08%
    Req/Sec    31.18k     1.56k   41.83k    96.44%
  10113387 requests in 5.10s, 154.06GB read
Requests/sec: 1982697.11
Transfer/sec:     30.20GB
[info] CPU 5397.3% | Mem 401MiB

[run 2/3]
Running 5s test @ http://localhost:8080
  64 threads and 4096 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.06ms  284.65us   9.96ms   90.17%
    Req/Sec    32.21k     1.07k   46.76k    96.87%
  10448044 requests in 5.10s, 159.16GB read
Requests/sec: 2048629.65
Transfer/sec:     31.21GB
[info] CPU 5608.1% | Mem 415MiB

[run 3/3]
Running 5s test @ http://localhost:8080
  64 threads and 4096 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.05ms  254.21us   5.14ms   92.20%
    Req/Sec    32.00k     0.96k   46.03k    95.64%
  10367607 requests in 5.10s, 157.94GB read
Requests/sec: 2033263.59
Transfer/sec:     30.97GB
[info] CPU 5505.7% | Mem 433MiB

=== Best: 2048629 req/s (CPU: 5608.1%, Mem: 415MiB) ===
[info] saved results/static/4096/zix.json
httparena-bench-zix
httparena-bench-zix

==============================================
=== zix / static / 6800c (tool=wrk) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
Running 5s test @ http://localhost:8080
  64 threads and 6800 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.80ms    0.95ms  44.38ms   94.91%
    Req/Sec    31.19k   713.15    43.69k    96.11%
  10086446 requests in 5.10s, 153.65GB read
Requests/sec: 1977539.47
Transfer/sec:     30.13GB
[info] CPU 5280.6% | Mem 447MiB

[run 2/3]
Running 5s test @ http://localhost:8080
  64 threads and 6800 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.77ms  415.76us   7.67ms   92.59%
    Req/Sec    31.29k     1.07k   45.58k    97.07%
  10122662 requests in 5.10s, 154.21GB read
Requests/sec: 1985362.39
Transfer/sec:     30.24GB
[info] CPU 5398.7% | Mem 475MiB

[run 3/3]
Running 5s test @ http://localhost:8080
  64 threads and 6800 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.74ms  354.21us   5.15ms   94.31%
    Req/Sec    31.46k     0.97k   46.76k    97.25%
  10175355 requests in 5.10s, 155.01GB read
Requests/sec: 1994802.32
Transfer/sec:     30.39GB
[info] CPU 5381.4% | Mem 500MiB

=== Best: 1994802 req/s (CPU: 5381.4%, Mem: 500MiB) ===
[info] saved results/static/6800/zix.json
httparena-bench-zix
httparena-bench-zix
[info] skip: zix does not subscribe to async-db
[info] skip: zix does not subscribe to crud
[info] skip: zix does not subscribe to fortunes
[info] skip: zix does not subscribe to baseline-h2
[info] skip: zix does not subscribe to static-h2
[info] skip: zix does not subscribe to baseline-h2c
[info] skip: zix does not subscribe to json-h2c
[info] skip: zix does not subscribe to baseline-h3
[info] skip: zix does not subscribe to static-h3
[info] skip: zix does not subscribe to gateway-64
[info] skip: zix does not subscribe to gateway-h3
[info] skip: zix does not subscribe to production-stack
[info] skip: zix does not subscribe to unary-grpc
[info] skip: zix does not subscribe to unary-grpc-tls
[info] skip: zix does not subscribe to stream-grpc
[info] skip: zix does not subscribe to stream-grpc-tls
[info] skip: zix does not subscribe to echo-ws
[info] skip: zix does not subscribe to echo-ws-pipeline
[info] rebuilding site/data/*.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/limited-conn-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/limited-conn-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-6800.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/upload-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/upload-32.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
[info] restoring loopback MTU to 65536

@prothegee

Copy link
Copy Markdown
Contributor Author

Testing zix HTTP/1.1 scope with io_uring.

@prothegee

Copy link
Copy Markdown
Contributor Author

/benchmark -f zix

@github-actions

Copy link
Copy Markdown
Contributor

👋 /benchmark request received. A collaborator will review and approve the run.

@github-actions

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: zix | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 4,187,491 6366.9% 134MiB +14.1% -60.8%
baseline 4096 4,425,576 6420.2% 185MiB +21.1% -53.2%
pipelined 512 53,432,531 6391.4% 134MiB +7.9% -60.7%
pipelined 4096 55,410,400 6453.2% 186MiB +11.8% -53.0%
limited-conn 512 2,719,256 5443.3% 152MiB +7.3% -68.5%
limited-conn 4096 2,735,230 5793.4% 231MiB -0.5% -85.0%
json 4096 2,361,377 5453.5% 289MiB -1.5% -76.5%
upload 32 8,251 1086.1% 123MiB -1.7% -63.5%
upload 256 6,657 941.2% 130MiB -0.7% -65.8%
static 1024 2,018,663 5521.1% 142MiB -0.8% -59.5%
static 4096 2,022,455 5491.0% 191MiB -0.7% -54.2%
static 6800 1,982,961 5265.5% 245MiB ~0% -50.6%
Full log

[run 3/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     256 (4/thread)
  Pipeline:  1
  Req/conn:  5
  Templates: 4
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   38.90ms   39.20ms   43.10ms   46.20ms   48.20ms

  32714 requests in 5.02s, 32718 responses
  Throughput: 6.51K req/s
  Bandwidth:  453.21KB/s
  Status codes: 2xx=32718, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 32718 / 32718 responses (100.0%)
  Reconnects: 6547
  Per-template: 8177,8181,8181,8179
  Per-template-ok: 8177,8181,8181,8179
[info] CPU 898.2% | Mem 131MiB

=== Best: 6657 req/s (CPU: 941.2%, Mem: 130MiB) ===
[info] input BW: 52.80GB/s (avg template: 8516680 bytes)
[info] saved results/upload/256/zix.json
httparena-bench-zix
httparena-bench-zix
[info] skip: zix does not subscribe to api-4
[info] skip: zix does not subscribe to api-16

==============================================
=== zix / static / 1024c (tool=wrk) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
Running 5s test @ http://localhost:8080
  64 threads and 1024 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   370.83us    1.19ms  51.76ms   99.46%
    Req/Sec    31.43k     1.05k   40.16k    97.18%
  10204415 requests in 5.10s, 155.45GB read
Requests/sec: 2000754.66
Transfer/sec:     30.48GB
[info] CPU 5385.8% | Mem 140MiB

[run 2/3]
Running 5s test @ http://localhost:8080
  64 threads and 1024 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   299.88us  113.83us   8.37ms   73.45%
    Req/Sec    31.70k   659.88    39.66k    97.70%
  10296168 requests in 5.10s, 156.85GB read
Requests/sec: 2018663.71
Transfer/sec:     30.75GB
[info] CPU 5521.1% | Mem 142MiB

[run 3/3]
Running 5s test @ http://localhost:8080
  64 threads and 1024 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   301.27us  111.14us   3.67ms   71.28%
    Req/Sec    31.67k   606.14    39.87k    97.43%
  10284850 requests in 5.10s, 156.68GB read
Requests/sec: 2016515.47
Transfer/sec:     30.72GB
[info] CPU 5475.4% | Mem 141MiB

=== Best: 2018663 req/s (CPU: 5521.1%, Mem: 142MiB) ===
[info] saved results/static/1024/zix.json
httparena-bench-zix
httparena-bench-zix

==============================================
=== zix / static / 4096c (tool=wrk) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
Running 5s test @ http://localhost:8080
  64 threads and 4096 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.13ms    1.02ms  51.39ms   99.16%
    Req/Sec    31.18k     1.34k   41.62k    96.53%
  10106978 requests in 5.10s, 153.97GB read
Requests/sec: 1981969.86
Transfer/sec:     30.19GB
[info] CPU 5276.4% | Mem 193MiB

[run 2/3]
Running 5s test @ http://localhost:8080
  64 threads and 4096 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.06ms  272.30us   8.00ms   91.67%
    Req/Sec    31.77k     1.10k   45.23k    97.33%
  10313597 requests in 5.10s, 157.11GB read
Requests/sec: 2022455.94
Transfer/sec:     30.81GB
[info] CPU 5491.0% | Mem 191MiB

[run 3/3]
Running 5s test @ http://localhost:8080
  64 threads and 4096 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.06ms  252.23us   4.70ms   92.44%
    Req/Sec    31.77k     0.92k   44.69k    96.10%
  10289418 requests in 5.10s, 156.75GB read
Requests/sec: 2017646.48
Transfer/sec:     30.74GB
[info] CPU 5424.2% | Mem 196MiB

=== Best: 2022455 req/s (CPU: 5491.0%, Mem: 191MiB) ===
[info] saved results/static/4096/zix.json
httparena-bench-zix
httparena-bench-zix

==============================================
=== zix / static / 6800c (tool=wrk) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
Running 5s test @ http://localhost:8080
  64 threads and 6800 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.83ms    0.89ms  52.64ms   94.31%
    Req/Sec    30.64k     0.89k   39.86k    96.26%
  9906533 requests in 5.08s, 150.91GB read
Requests/sec: 1948331.48
Transfer/sec:     29.68GB
[info] CPU 5116.2% | Mem 240MiB

[run 2/3]
Running 5s test @ http://localhost:8080
  64 threads and 6800 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.79ms  409.36us   6.47ms   93.18%
    Req/Sec    30.86k     1.11k   44.23k    92.55%
  9984234 requests in 5.10s, 152.10GB read
Requests/sec: 1959521.44
Transfer/sec:     29.85GB
[info] CPU 5238.3% | Mem 240MiB

[run 3/3]
Running 5s test @ http://localhost:8080
  64 threads and 6800 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.76ms  350.84us   8.83ms   94.69%
    Req/Sec    31.19k     0.89k   42.88k    95.06%
  10089828 requests in 5.09s, 153.71GB read
Requests/sec: 1982961.96
Transfer/sec:     30.21GB
[info] CPU 5265.5% | Mem 245MiB

=== Best: 1982961 req/s (CPU: 5265.5%, Mem: 245MiB) ===
[info] saved results/static/6800/zix.json
httparena-bench-zix
httparena-bench-zix
[info] skip: zix does not subscribe to async-db
[info] skip: zix does not subscribe to crud
[info] skip: zix does not subscribe to fortunes
[info] skip: zix does not subscribe to baseline-h2
[info] skip: zix does not subscribe to static-h2
[info] skip: zix does not subscribe to baseline-h2c
[info] skip: zix does not subscribe to json-h2c
[info] skip: zix does not subscribe to baseline-h3
[info] skip: zix does not subscribe to static-h3
[info] skip: zix does not subscribe to gateway-64
[info] skip: zix does not subscribe to gateway-h3
[info] skip: zix does not subscribe to production-stack
[info] skip: zix does not subscribe to unary-grpc
[info] skip: zix does not subscribe to unary-grpc-tls
[info] skip: zix does not subscribe to stream-grpc
[info] skip: zix does not subscribe to stream-grpc-tls
[info] skip: zix does not subscribe to echo-ws
[info] skip: zix does not subscribe to echo-ws-pipeline
[info] rebuilding site/data/*.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/limited-conn-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/limited-conn-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-6800.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/upload-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/upload-32.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
[info] restoring loopback MTU to 65536

@prothegee

Copy link
Copy Markdown
Contributor Author

Picking io_uring.

Proceeding correcting meta.json information.

@prothegee

Copy link
Copy Markdown
Contributor Author

Submitting result.

@prothegee

Copy link
Copy Markdown
Contributor Author

/benchmark -f zix --save

@github-actions

Copy link
Copy Markdown
Contributor

👋 /benchmark request received. A collaborator will review and approve the run.

@prothegee prothegee closed this Jun 17, 2026
@prothegee prothegee reopened this Jun 17, 2026
@prothegee

prothegee commented Jun 17, 2026

Copy link
Copy Markdown
Contributor Author

Wait, I need your opinion. Should I submit after zix-ws & zix-grpc tested? @MDA2AV
*tested: the /benchmark <framework>

Honestly not many change for zix-ws #886 and zix-grpc #887

So in zix-ws & zix-grpc I'll push and selecting io_uring dispatch model.
Rather than testing both of epoll and io_uring then submitting.

zix 0.4.x-rc3 will reflect zix 0.4.x release.

What do you think?

@github-actions

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: zix | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 4,217,982 6348.6% 130MiB +14.9% -62.0%
baseline 4096 4,492,613 6413.1% 186MiB +22.9% -52.9%
pipelined 512 53,609,380 6399.9% 134MiB +8.2% -60.7%
pipelined 4096 55,979,164 6454.4% 186MiB +13.0% -53.0%
limited-conn 512 2,740,199 5474.7% 150MiB +8.1% -68.9%
limited-conn 4096 2,751,069 5783.9% 237MiB +0.1% -84.6%
json 4096 2,348,626 5365.1% 290MiB -2.0% -76.4%
upload 32 8,185 1065.4% 124MiB -2.4% -63.2%
upload 256 6,661 943.2% 130MiB -0.6% -65.8%
static 1024 2,025,521 5488.4% 140MiB -0.5% -60.1%
static 4096 2,036,680 5503.2% 195MiB ~0% -53.2%
static 6800 1,986,456 5269.1% 241MiB +0.1% -51.4%
Full log

[run 3/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     256 (4/thread)
  Pipeline:  1
  Req/conn:  5
  Templates: 4
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   38.43ms   38.80ms   42.30ms   44.50ms   52.70ms

  33211 requests in 5.02s, 33215 responses
  Throughput: 6.61K req/s
  Bandwidth:  459.98KB/s
  Status codes: 2xx=33215, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 33215 / 33215 responses (100.0%)
  Reconnects: 6652
  Per-template: 8304,8303,8304,8304
  Per-template-ok: 8304,8303,8304,8304
[info] CPU 902.2% | Mem 140MiB

=== Best: 6661 req/s (CPU: 943.2%, Mem: 130MiB) ===
[info] input BW: 52.83GB/s (avg template: 8516680 bytes)
[info] saved results/upload/256/zix.json
httparena-bench-zix
httparena-bench-zix
[info] skip: zix does not subscribe to api-4
[info] skip: zix does not subscribe to api-16

==============================================
=== zix / static / 1024c (tool=wrk) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
Running 5s test @ http://localhost:8080
  64 threads and 1024 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   379.89us    1.14ms  39.71ms   99.37%
    Req/Sec    31.20k     1.62k   41.21k    96.94%
  10131557 requests in 5.10s, 154.34GB read
Requests/sec: 1986420.11
Transfer/sec:     30.26GB
[info] CPU 5330.4% | Mem 140MiB

[run 2/3]
Running 5s test @ http://localhost:8080
  64 threads and 1024 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   301.82us  116.57us   3.45ms   72.42%
    Req/Sec    31.81k   622.16    39.76k    97.18%
  10329518 requests in 5.10s, 157.36GB read
Requests/sec: 2025255.11
Transfer/sec:     30.85GB
[info] CPU 5504.0% | Mem 141MiB

[run 3/3]
Running 5s test @ http://localhost:8080
  64 threads and 1024 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   300.92us  111.70us   3.21ms   70.92%
    Req/Sec    31.82k   517.42    36.90k    96.69%
  10331115 requests in 5.10s, 157.38GB read
Requests/sec: 2025521.36
Transfer/sec:     30.86GB
[info] CPU 5488.4% | Mem 140MiB

=== Best: 2025521 req/s (CPU: 5488.4%, Mem: 140MiB) ===
[info] saved results/static/1024/zix.json
httparena-bench-zix
httparena-bench-zix

==============================================
=== zix / static / 4096c (tool=wrk) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
Running 5s test @ http://localhost:8080
  64 threads and 4096 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.16ms    1.50ms  82.56ms   99.28%
    Req/Sec    31.29k     1.26k   41.53k    96.99%
  10140917 requests in 5.10s, 154.48GB read
Requests/sec: 1988297.75
Transfer/sec:     30.29GB
[info] CPU 5270.9% | Mem 193MiB

[run 2/3]
Running 5s test @ http://localhost:8080
  64 threads and 4096 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.05ms  267.40us   7.16ms   91.57%
    Req/Sec    32.04k     0.91k   44.11k    95.24%
  10386093 requests in 5.10s, 158.22GB read
Requests/sec: 2036680.11
Transfer/sec:     31.03GB
[info] CPU 5503.2% | Mem 195MiB

[run 3/3]
Running 5s test @ http://localhost:8080
  64 threads and 4096 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.05ms  251.36us   5.87ms   92.59%
    Req/Sec    32.03k   803.58    44.48k    96.01%
  10383871 requests in 5.10s, 158.19GB read
Requests/sec: 2035995.65
Transfer/sec:     31.02GB
[info] CPU 5440.5% | Mem 193MiB

=== Best: 2036680 req/s (CPU: 5503.2%, Mem: 195MiB) ===
[info] saved results/static/4096/zix.json
httparena-bench-zix
httparena-bench-zix

==============================================
=== zix / static / 6800c (tool=wrk) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
Running 5s test @ http://localhost:8080
  64 threads and 6800 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.88ms    1.45ms  60.78ms   95.51%
    Req/Sec    30.80k     1.31k   41.68k    96.97%
  9955601 requests in 5.10s, 151.66GB read
Requests/sec: 1952313.67
Transfer/sec:     29.74GB
[info] CPU 5096.5% | Mem 240MiB

[run 2/3]
Running 5s test @ http://localhost:8080
  64 threads and 6800 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.77ms  389.90us   6.68ms   93.67%
    Req/Sec    31.15k     1.02k   45.24k    93.95%
  10077666 requests in 5.08s, 153.52GB read
Requests/sec: 1982428.23
Transfer/sec:     30.20GB
[info] CPU 5263.5% | Mem 238MiB

[run 3/3]
Running 5s test @ http://localhost:8080
  64 threads and 6800 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.75ms  325.96us   5.18ms   95.26%
    Req/Sec    31.27k     0.99k   46.85k    97.71%
  10111205 requests in 5.09s, 154.03GB read
Requests/sec: 1986456.57
Transfer/sec:     30.26GB
[info] CPU 5269.1% | Mem 241MiB

=== Best: 1986456 req/s (CPU: 5269.1%, Mem: 241MiB) ===
[info] saved results/static/6800/zix.json
httparena-bench-zix
httparena-bench-zix
[info] skip: zix does not subscribe to async-db
[info] skip: zix does not subscribe to crud
[info] skip: zix does not subscribe to fortunes
[info] skip: zix does not subscribe to baseline-h2
[info] skip: zix does not subscribe to static-h2
[info] skip: zix does not subscribe to baseline-h2c
[info] skip: zix does not subscribe to json-h2c
[info] skip: zix does not subscribe to baseline-h3
[info] skip: zix does not subscribe to static-h3
[info] skip: zix does not subscribe to gateway-64
[info] skip: zix does not subscribe to gateway-h3
[info] skip: zix does not subscribe to production-stack
[info] skip: zix does not subscribe to unary-grpc
[info] skip: zix does not subscribe to unary-grpc-tls
[info] skip: zix does not subscribe to stream-grpc
[info] skip: zix does not subscribe to stream-grpc-tls
[info] skip: zix does not subscribe to echo-ws
[info] skip: zix does not subscribe to echo-ws-pipeline
[info] rebuilding site/data/*.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/limited-conn-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/limited-conn-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-6800.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/upload-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/upload-32.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
[info] restoring loopback MTU to 65536

@MDA2AV

MDA2AV commented Jun 18, 2026

Copy link
Copy Markdown
Owner

Wait, I need your opinion. Should I submit after zix-ws & zix-grpc tested? @MDA2AV *tested: the /benchmark <framework>

Honestly not many change for zix-ws #886 and zix-grpc #887

So in zix-ws & zix-grpc I'll push and selecting io_uring dispatch model. Rather than testing both of epoll and io_uring then submitting.

zix 0.4.x-rc3 will reflect zix 0.4.x release.

What do you think?

I can push this, it is up to you. There are no rules/checks for engine entries, values are merely informative

@github-actions

Copy link
Copy Markdown
Contributor

👋 /benchmark request received. A collaborator will review and approve the run.

@MDA2AV MDA2AV merged commit 2b0aa70 into MDA2AV:main Jun 18, 2026
4 checks passed
@prothegee prothegee deleted the zix-0.4.x-rc3-http branch June 18, 2026 14:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants