Skip to content

Update roadrunner to v0.8.0#945

Draft
williamthome wants to merge 17 commits into
MDA2AV:mainfrom
williamthome:feat/bump-roadrunner-0.8.0
Draft

Update roadrunner to v0.8.0#945
williamthome wants to merge 17 commits into
MDA2AV:mainfrom
williamthome:feat/bump-roadrunner-0.8.0

Conversation

@williamthome

Copy link
Copy Markdown
Contributor

Description

Updates roadrunner from v0.6.0 to v0.8.0 and tunes the adapter for the high-concurrency profiles: raises the listener connection limits, runs the database queries as prepared statements, and scopes response compression to the routes that serve compressible content.


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.

@williamthome

Copy link
Copy Markdown
Contributor Author

/benchmark -f roadrunner

@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: roadrunner | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 932,001 6560.4% 246MiB +11.8% -12.1%
baseline 4096 888,233 6423.1% 335MiB +4.9% +16.3%
pipelined 512 1,452,800 6626.4% 192MiB +3.2% +5.5%
pipelined 4096 1,414,188 6600.7% 275MiB +0.3% +22.2%
limited-conn 512 441,232 5449.6% 296MiB +8.6% +27.6%
limited-conn 4096 445,511 5433.0% 309MiB +10.1% +43.1%
json 4096 200,465 6327.5% 490MiB -2.9% -32.9%
json-comp 512 100,210 6264.2% 818MiB -4.4% -6.7%
json-comp 4096 106,718 6428.1% 857MiB +13.6% ~0%
json-comp 16384 102,890 6382.8% 907MiB -1.2% +2.4%
json-tls 4096 134,169 6250.8% 709MiB +157.0% +46.5%
upload 32 2,837 2110.1% 320MiB +0.3% -9.6%
upload 256 2,957 5687.4% 612MiB +1.2% +17.0%
api-4 256 13,196 400.4% 201MiB -34.7% +20.4%
api-16 1024 49,564 1607.8% 349MiB +18.6% +12.6%
static 1024 164,404 4775.4% 216MiB +915.8% +25.6%
static 4096 159,097 5464.6% 401MiB +613.7% +113.3%
static 6800 142,002 5831.8% 531MiB +773.5% +216.1%
async-db 1024 136,026 5253.8% 671MiB +61.1% +3.9%
crud 4096 424,323 4878.0% 663MiB +124.2% +70.4%
fortunes 1024 123,264 5760.2% 841MiB +161.4% -3.7%
baseline-h2 256 488,587 6513.1% 539MiB +1.0% +6.9%
baseline-h2 1024 474,054 6463.1% 969MiB -3.8% +74.6%
static-h2 256 76,335 6292.5% 632MiB +307.8% -10.1%
static-h2 1024 75,276 6160.6% 1.4GiB +304.5% +16.7%
baseline-h2c 256 894,384 6602.6% 620MiB -3.0% +7.1%
baseline-h2c 1024 832,618 6569.8% 1009MiB -11.3% +98.2%
baseline-h2c 4096 710,889 6398.5% 2.3GiB -22.8% +310.3%
json-h2c 1024 100,247 5168.2% 5.6GiB -11.4% +273.3%
json-h2c 4096 100,818 4816.0% 15.1GiB -18.8% +843.8%
baseline-h3 64 116,020 5221.6% 460MiB +4.9% -1.7%
static-h3 64 13,402 5375.9% 673MiB +2.3% -3.9%
echo-ws 512 404,445 5039.2% 221MiB -51.6% -25.8%
echo-ws 4096 1,418,972 6178.8% 490MiB +110.9% +66.1%
echo-ws 16384 1,048,040 5726.4% 812MiB +78.9% +203.0%
echo-ws-pipeline 512 2,127,615 6724.1% 181MiB +1.6% -1.6%
echo-ws-pipeline 4096 1,978,590 6593.6% 332MiB -8.1% +72.9%
echo-ws-pipeline 16384 1,963,818 6304.7% 347MiB -8.5% +80.7%
Full log
httparena-bench-roadrunner

==============================================
=== roadrunner / echo-ws-pipeline / 4096c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   26.16ms   31.80ms   34.70ms   43.30ms   65.90ms

  9911474 frames sent in 5.00s, 9848786 frames received
  Throughput: 1.97M req/s
  Bandwidth:  13.23MB/s
  WS upgrades: 4096
  WS frames:   9848786
  Latency samples: 9848786 / 9848786 responses (100.0%)
[info] CPU 6532.1% | Mem 296MiB

[run 2/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   28.02ms   32.20ms   34.80ms   43.00ms   68.10ms

  9908656 frames sent in 5.00s, 9853598 frames received
  Throughput: 1.97M req/s
  Bandwidth:  13.22MB/s
  WS upgrades: 4093
  WS frames:   9853598
  Latency samples: 9853560 / 9853598 responses (100.0%)
[info] CPU 6715.6% | Mem 336MiB

[run 3/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   27.30ms   32.20ms   34.40ms   38.00ms   55.30ms

  9949465 frames sent in 5.00s, 9892953 frames received
  Throughput: 1.98M req/s
  Bandwidth:  13.28MB/s
  WS upgrades: 4096
  WS frames:   9892953
  Latency samples: 9892935 / 9892953 responses (100.0%)
[info] CPU 6593.6% | Mem 332MiB

=== Best: 1978590 req/s (CPU: 6593.6%, Mem: 332MiB) ===
[info] saved results/echo-ws-pipeline/4096/roadrunner.json
httparena-bench-roadrunner
httparena-bench-roadrunner

==============================================
=== roadrunner / echo-ws-pipeline / 16384c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   32.57ms   35.50ms   50.60ms   81.00ms   136.10ms

  9920245 frames sent in 5.00s, 9819093 frames received
  Throughput: 1.96M req/s
  Bandwidth:  13.24MB/s
  WS upgrades: 6322
  WS frames:   9819093
  Latency samples: 9819093 / 9819093 responses (100.0%)
[info] CPU 6304.7% | Mem 347MiB

[run 2/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   37.22ms   38.80ms   55.70ms   75.70ms   103.50ms

  9808907 frames sent in 5.00s, 9702699 frames received
  Throughput: 1.94M req/s
  Bandwidth:  13.09MB/s
  WS upgrades: 6894
  WS frames:   9702699
  Latency samples: 9702379 / 9702699 responses (100.0%)
[info] CPU 6695.2% | Mem 407MiB

[run 3/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   38.07ms   37.20ms   58.20ms   67.90ms   89.50ms

  9750707 frames sent in 5.00s, 9634723 frames received
  Throughput: 1.93M req/s
  Bandwidth:  13.01MB/s
  WS upgrades: 7249
  WS frames:   9634723
  Latency samples: 9634723 / 9634723 responses (100.0%)
[info] CPU 6450.7% | Mem 427MiB

=== Best: 1963818 req/s (CPU: 6304.7%, Mem: 347MiB) ===
[info] saved results/echo-ws-pipeline/16384/roadrunner.json
httparena-bench-roadrunner
httparena-bench-roadrunner
[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/api-16-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/api-4-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/async-db-1024.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/baseline-h2-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2c-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2c-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2c-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h3-64.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/crud-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-16384.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-pipeline-16384.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-pipeline-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-pipeline-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/fortunes-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-16384.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-h2c-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-h2c-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-tls-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/static-h2-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-h2-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-h3-64.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
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536

@williamthome

Copy link
Copy Markdown
Contributor Author

/benchmark -f roadrunner

@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: roadrunner | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 931,855 6674.7% 240MiB +11.8% -14.3%
baseline 4096 917,499 6453.6% 315MiB +8.3% +9.4%
pipelined 512 1,474,002 6665.3% 193MiB +4.7% +6.0%
pipelined 4096 1,430,740 6575.0% 263MiB +1.5% +16.9%
limited-conn 512 449,208 5275.1% 325MiB +10.6% +40.1%
limited-conn 4096 431,133 5363.8% 330MiB +6.6% +52.8%
json 4096 234,520 6263.0% 476MiB +13.6% -34.8%
json-comp 512 106,794 6292.4% 803MiB +1.9% -8.4%
json-comp 4096 97,902 6240.4% 886MiB +4.3% +3.4%
json-comp 16384 99,422 6403.8% 905MiB -4.5% +2.1%
json-tls 4096 162,808 6274.1% 794MiB +211.8% +64.0%
upload 32 2,827 2132.7% 310MiB ~0% -12.4%
upload 256 2,950 5332.8% 623MiB +0.9% +19.1%
api-4 256 13,287 401.5% 208MiB -34.3% +24.6%
api-16 1024 49,338 1603.8% 328MiB +18.1% +5.8%
static 1024 173,549 4905.4% 218MiB +972.3% +26.7%
static 4096 159,528 5981.9% 405MiB +615.6% +115.4%
static 6800 143,860 5861.9% 500MiB +784.9% +197.6%
async-db 1024 63,691 5062.9% 735MiB -24.6% +13.8%
crud 4096 340,156 5098.6% 761MiB +79.8% +95.6%
fortunes 1024 50,746 6135.4% 1.0GiB +7.6% +17.3%
baseline-h2 256 263,119 6655.6% 354MiB -45.6% -29.8%
baseline-h2 1024 95,174 6549.5% 596MiB -80.7% +7.4%
static-h2 256 64,920 6577.0% 518MiB +246.8% -26.3%
static-h2 1024 64,650 6607.6% 632MiB +247.4% -48.6%
baseline-h2c 256 85,832 6574.0% 386MiB -90.7% -33.3%
baseline-h2c 1024 23,504 6471.9% 260MiB -97.5% -48.9%
baseline-h2c 4096 8,069 6533.8% 311MiB -99.1% -45.8%
json-h2c 1024 43,147 6574.6% 624MiB -61.9% -59.4%
json-h2c 4096 22,876 6441.1% 617MiB -81.6% -62.3%
baseline-h3 64 69,746 6093.3% 1.0GiB -36.9% +118.8%
static-h3 64 12,434 5933.5% 720MiB -5.1% +2.9%
echo-ws 512 451,672 5020.5% 222MiB -46.0% -25.5%
echo-ws 4096 1,299,847 6148.8% 519MiB +93.2% +75.9%
echo-ws 16384 1,252,172 6071.7% 753MiB +113.7% +181.0%
echo-ws-pipeline 512 2,105,990 6625.9% 177MiB +0.6% -3.8%
echo-ws-pipeline 4096 1,992,334 6337.7% 310MiB -7.5% +61.5%
echo-ws-pipeline 16384 1,958,301 6219.1% 368MiB -8.7% +91.7%
Full log
httparena-bench-roadrunner

==============================================
=== roadrunner / echo-ws-pipeline / 4096c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   25.52ms   29.70ms   34.40ms   69.20ms   167.10ms

  10027210 frames sent in 5.00s, 9961674 frames received
  Throughput: 1.99M req/s
  Bandwidth:  13.38MB/s
  WS upgrades: 4096
  WS frames:   9961674
  Latency samples: 9961674 / 9961674 responses (100.0%)
[info] CPU 6337.7% | Mem 310MiB

[run 2/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   27.30ms   31.90ms   34.50ms   46.90ms   68.90ms

  10005682 frames sent in 5.00s, 9944667 frames received
  Throughput: 1.99M req/s
  Bandwidth:  13.35MB/s
  WS upgrades: 4096
  WS frames:   9944667
  Latency samples: 9944632 / 9944667 responses (100.0%)
[info] CPU 6707.4% | Mem 359MiB

[run 3/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   27.23ms   31.50ms   35.30ms   52.80ms    5.00s

  9860871 frames sent in 5.00s, 9802487 frames received
  Throughput: 1.96M req/s
  Bandwidth:  13.16MB/s
  WS upgrades: 4096
  WS frames:   9802487
  Latency samples: 9849173 / 9802487 responses (100.5%)
[info] CPU 6324.8% | Mem 343MiB

=== Best: 1992334 req/s (CPU: 6337.7%, Mem: 310MiB) ===
[info] saved results/echo-ws-pipeline/4096/roadrunner.json
httparena-bench-roadrunner
httparena-bench-roadrunner

==============================================
=== roadrunner / echo-ws-pipeline / 16384c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   33.16ms   35.20ms   52.50ms   115.20ms   174.80ms

  9899572 frames sent in 5.00s, 9791508 frames received
  Throughput: 1.96M req/s
  Bandwidth:  13.21MB/s
  WS upgrades: 6754
  WS frames:   9791508
  Latency samples: 9791508 / 9791508 responses (100.0%)
[info] CPU 6219.1% | Mem 368MiB

[run 2/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   37.89ms   39.40ms   55.40ms   65.50ms   82.70ms

  9778931 frames sent in 5.00s, 9674639 frames received
  Throughput: 1.93M req/s
  Bandwidth:  13.05MB/s
  WS upgrades: 6893
  WS frames:   9674639
  Latency samples: 9674629 / 9674639 responses (100.0%)
[info] CPU 6670.3% | Mem 412MiB

[run 3/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   38.64ms   40.80ms   57.70ms   62.80ms   85.80ms

  9707500 frames sent in 5.00s, 9598412 frames received
  Throughput: 1.92M req/s
  Bandwidth:  12.96MB/s
  WS upgrades: 7074
  WS frames:   9598412
  Latency samples: 9598412 / 9598412 responses (100.0%)
[info] CPU 6403.2% | Mem 425MiB

=== Best: 1958301 req/s (CPU: 6219.1%, Mem: 368MiB) ===
[info] saved results/echo-ws-pipeline/16384/roadrunner.json
httparena-bench-roadrunner
httparena-bench-roadrunner
[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/api-16-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/api-4-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/async-db-1024.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/baseline-h2-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2c-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2c-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2c-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h3-64.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/crud-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-16384.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-pipeline-16384.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-pipeline-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-pipeline-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/fortunes-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-16384.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-h2c-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-h2c-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-tls-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/static-h2-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-h2-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-h3-64.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
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536

@williamthome williamthome marked this pull request as draft June 28, 2026 23:00
@williamthome

Copy link
Copy Markdown
Contributor Author

/benchmark -f roadrunner

@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: roadrunner | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 917,372 6693.7% 239MiB +10.1% -14.6%
baseline 4096 907,870 6499.5% 361MiB +7.2% +25.3%
pipelined 512 1,436,521 6631.7% 190MiB +2.0% +4.4%
pipelined 4096 1,403,908 6545.4% 269MiB -0.4% +19.6%
limited-conn 512 445,423 5472.5% 306MiB +9.6% +31.9%
limited-conn 4096 424,795 5316.2% 316MiB +5.0% +46.3%
json 4096 201,322 6143.4% 507MiB -2.4% -30.5%
json-comp 512 99,494 6390.9% 729MiB -5.1% -16.9%
json-comp 4096 106,376 6267.9% 866MiB +13.3% +1.1%
json-comp 16384 84,356 6099.9% 982MiB -19.0% +10.8%
json-tls 4096 159,115 6289.1% 928MiB +204.7% +91.7%
upload 32 2,838 2084.0% 322MiB +0.4% -9.0%
upload 256 2,926 5095.0% 586MiB +0.1% +12.0%
api-4 256 13,127 401.2% 254MiB -35.1% +52.1%
api-16 1024 49,698 1600.9% 390MiB +18.9% +25.8%
static 1024 170,795 4853.9% 215MiB +955.3% +25.0%
static 4096 157,453 5749.0% 407MiB +606.3% +116.5%
static 6800 142,228 5868.0% 437MiB +774.9% +160.1%
async-db 1024 133,640 6435.4% 791MiB +58.3% +22.4%
crud 4096 407,808 4666.4% 822MiB +115.5% +111.3%
fortunes 1024 63,127 6460.6% 968MiB +33.9% +10.9%
baseline-h2 256 479,470 6451.1% 436MiB -0.9% -13.5%
baseline-h2 1024 490,938 6317.9% 492MiB -0.4% -11.4%
static-h2 256 91,179 5589.8% 474MiB +387.1% -32.6%
static-h2 1024 86,925 5458.6% 498MiB +367.1% -59.5%
baseline-h2c 256 917,889 6487.4% 509MiB -0.5% -12.1%
baseline-h2c 1024 978,076 6317.9% 583MiB +4.2% +14.5%
baseline-h2c 4096 977,827 6121.7% 542MiB +6.2% -5.6%
json-h2c 1024 137,572 6025.9% 1.6GiB +21.6% +6.7%
json-h2c 4096 141,797 5880.8% 1.6GiB +14.2% ~0%
baseline-h3 64 103,356 5680.3% 458MiB -6.5% -2.1%
static-h3 64 14,255 5071.8% 701MiB +8.8% +0.1%
echo-ws 512 577,504 5045.6% 254MiB -30.9% -14.8%
echo-ws 4096 1,429,376 6472.3% 505MiB +112.4% +71.2%
echo-ws 16384 1,263,929 6033.2% 797MiB +115.7% +197.4%
echo-ws-pipeline 512 2,096,982 6630.0% 190MiB +0.1% +3.3%
echo-ws-pipeline 4096 1,963,714 6520.3% 295MiB -8.8% +53.6%
echo-ws-pipeline 16384 1,987,666 6382.0% 336MiB -7.4% +75.0%
Full log
==============================================
=== roadrunner / echo-ws-pipeline / 4096c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   26.34ms   31.70ms   35.20ms   49.50ms   75.50ms

  9881020 frames sent in 5.00s, 9818572 frames received
  Throughput: 1.96M req/s
  Bandwidth:  13.19MB/s
  WS upgrades: 4095
  WS frames:   9818572
  Latency samples: 9818572 / 9818572 responses (100.0%)
[info] CPU 6520.3% | Mem 295MiB

[run 2/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   27.51ms   31.50ms   34.80ms   38.30ms   60.50ms

  9811952 frames sent in 5.00s, 9761106 frames received
  Throughput: 1.95M req/s
  Bandwidth:  13.10MB/s
  WS upgrades: 4096
  WS frames:   9760672
  Latency samples: 9760654 / 9761106 responses (100.0%)

  WARNING: 434/9761106 responses (0.0%) had unexpected status (expected 2xx)
[info] CPU 6745.5% | Mem 342MiB

[run 3/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   27.50ms   31.90ms   34.60ms   44.00ms   70.70ms

  9816669 frames sent in 5.00s, 9763193 frames received
  Throughput: 1.95M req/s
  Bandwidth:  13.10MB/s
  WS upgrades: 4095
  WS frames:   9763193
  Latency samples: 9763170 / 9763193 responses (100.0%)
[info] CPU 6537.1% | Mem 338MiB

=== Best: 1963714 req/s (CPU: 6520.3%, Mem: 295MiB) ===
[info] saved results/echo-ws-pipeline/4096/roadrunner.json
httparena-bench-roadrunner
httparena-bench-roadrunner

==============================================
=== roadrunner / echo-ws-pipeline / 16384c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   28.55ms   30.60ms   45.00ms   54.20ms   81.70ms

  10032186 frames sent in 5.00s, 9938330 frames received
  Throughput: 1.99M req/s
  Bandwidth:  13.39MB/s
  WS upgrades: 5866
  WS frames:   9938330
  Latency samples: 9938330 / 9938330 responses (100.0%)
[info] CPU 6382.0% | Mem 336MiB

[run 2/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   36.13ms   39.30ms   53.50ms   60.20ms   70.00ms

  9850752 frames sent in 5.00s, 9746928 frames received
  Throughput: 1.95M req/s
  Bandwidth:  13.15MB/s
  WS upgrades: 6745
  WS frames:   9746928
  Latency samples: 9746928 / 9746928 responses (100.0%)
[info] CPU 6660.8% | Mem 382MiB

[run 3/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   41.15ms   44.70ms   57.40ms   77.50ms   95.50ms

  9605535 frames sent in 5.00s, 9494287 frames received
  Throughput: 1.90M req/s
  Bandwidth:  12.82MB/s
  WS upgrades: 6953
  WS frames:   9494287
  Latency samples: 9494287 / 9494287 responses (100.0%)
[info] CPU 6192.7% | Mem 419MiB

=== Best: 1987666 req/s (CPU: 6382.0%, Mem: 336MiB) ===
[info] saved results/echo-ws-pipeline/16384/roadrunner.json
httparena-bench-roadrunner
httparena-bench-roadrunner
[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/api-16-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/api-4-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/async-db-1024.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/baseline-h2-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2c-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2c-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2c-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h3-64.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/crud-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-16384.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-pipeline-16384.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-pipeline-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-pipeline-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/fortunes-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-16384.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-h2c-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-h2c-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-tls-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/static-h2-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-h2-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-h3-64.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
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536

@williamthome williamthome marked this pull request as ready for review June 29, 2026 10:44
@williamthome

Copy link
Copy Markdown
Contributor Author

/benchmark -f roadrunner --save

@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 --save cannot start: main has diverged and cannot be auto-merged into this branch. Please merge or rebase main manually, push, and re-run /benchmark --save.

@williamthome williamthome force-pushed the feat/bump-roadrunner-0.8.0 branch from 70aaed7 to 753b760 Compare June 29, 2026 10:54
@williamthome

Copy link
Copy Markdown
Contributor Author

/benchmark -f roadrunner --save

@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: roadrunner | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 919,625 6679.7% 240MiB +10.4% -14.3%
baseline 4096 897,467 6341.8% 313MiB +6.0% +8.7%
pipelined 512 1,460,619 6631.3% 193MiB +3.7% +6.0%
pipelined 4096 1,422,709 6539.6% 281MiB +0.9% +24.9%
limited-conn 512 452,568 5523.1% 289MiB +11.4% +24.6%
limited-conn 4096 430,945 5097.2% 321MiB +6.5% +48.6%
json 4096 202,742 6340.8% 484MiB -1.8% -33.7%
json-comp 512 101,121 6248.2% 748MiB -3.6% -14.7%
json-comp 4096 100,303 6284.6% 865MiB +6.8% +0.9%
json-comp 16384 100,565 6072.8% 1.0GiB -3.4% +15.6%
json-tls 4096 156,271 6247.6% 957MiB +199.3% +97.7%
upload 32 2,841 2008.3% 321MiB +0.5% -9.3%
upload 256 2,927 5569.8% 603MiB +0.1% +15.3%
api-4 256 13,122 401.0% 237MiB -35.1% +41.9%
api-16 1024 49,738 1610.2% 376MiB +19.0% +21.3%
static 1024 153,986 4578.4% 213MiB +851.5% +23.8%
static 4096 147,952 5496.2% 349MiB +563.7% +85.6%
static 6800 144,515 5848.9% 491MiB +788.9% +192.3%
async-db 1024 134,059 6494.0% 830MiB +58.8% +28.5%
crud 4096 411,614 4489.4% 871MiB +117.5% +123.9%
fortunes 1024 63,139 6336.7% 968MiB +33.9% +10.9%
baseline-h2 256 476,926 6492.9% 413MiB -1.4% -18.1%
baseline-h2 1024 492,693 6324.3% 423MiB ~0% -23.8%
static-h2 256 87,931 5691.5% 470MiB +369.7% -33.1%
static-h2 1024 93,680 5254.4% 491MiB +403.4% -60.0%
baseline-h2c 256 925,308 6552.2% 556MiB +0.3% -4.0%
baseline-h2c 1024 976,767 6340.2% 569MiB +4.1% +11.8%
baseline-h2c 4096 978,215 6179.8% 556MiB +6.2% -3.1%
json-h2c 1024 137,721 6058.9% 1.5GiB +21.8% ~0%
json-h2c 4096 140,117 5863.8% 1.6GiB +12.8% ~0%
baseline-h3 64 113,541 5869.6% 456MiB +2.7% -2.6%
static-h3 64 13,554 5236.7% 691MiB +3.5% -1.3%
echo-ws 512 524,688 5037.3% 234MiB -37.3% -21.5%
echo-ws 4096 1,306,752 5998.4% 351MiB +94.2% +19.0%
echo-ws 16384 1,252,832 6025.7% 701MiB +113.8% +161.6%
echo-ws-pipeline 512 2,147,716 6722.9% 186MiB +2.6% +1.1%
echo-ws-pipeline 4096 2,000,560 6466.7% 297MiB -7.1% +54.7%
echo-ws-pipeline 16384 1,953,710 6329.1% 332MiB -8.9% +72.9%
Full log
httparena-bench-roadrunner

==============================================
=== roadrunner / echo-ws-pipeline / 4096c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   25.64ms   30.70ms   34.60ms   55.60ms   76.10ms

  10065088 frames sent in 5.00s, 10002800 frames received
  Throughput: 2.00M req/s
  Bandwidth:  13.43MB/s
  WS upgrades: 4096
  WS frames:   10002800
  Latency samples: 10002800 / 10002800 responses (100.0%)
[info] CPU 6466.7% | Mem 297MiB

[run 2/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   27.50ms   31.90ms   34.60ms   41.30ms   58.50ms

  9994721 frames sent in 5.00s, 9939407 frames received
  Throughput: 1.99M req/s
  Bandwidth:  13.34MB/s
  WS upgrades: 4096
  WS frames:   9939407
  Latency samples: 9939380 / 9939407 responses (100.0%)
[info] CPU 6662.0% | Mem 361MiB

[run 3/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   26.86ms   31.40ms   35.10ms   40.40ms   63.00ms

  9912118 frames sent in 5.00s, 9855860 frames received
  Throughput: 1.97M req/s
  Bandwidth:  13.23MB/s
  WS upgrades: 4096
  WS frames:   9855860
  Latency samples: 9855847 / 9855860 responses (100.0%)
[info] CPU 6342.9% | Mem 347MiB

=== Best: 2000560 req/s (CPU: 6466.7%, Mem: 297MiB) ===
[info] saved results/echo-ws-pipeline/4096/roadrunner.json
httparena-bench-roadrunner
httparena-bench-roadrunner

==============================================
=== roadrunner / echo-ws-pipeline / 16384c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   31.36ms   31.80ms   50.80ms   72.80ms   94.40ms

  9871335 frames sent in 5.00s, 9768551 frames received
  Throughput: 1.95M req/s
  Bandwidth:  13.17MB/s
  WS upgrades: 6454
  WS frames:   9768551
  Latency samples: 9768551 / 9768551 responses (100.0%)
[info] CPU 6329.1% | Mem 332MiB

[run 2/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   36.23ms   39.00ms   54.00ms   71.80ms   105.80ms

  9658342 frames sent in 5.00s, 9552982 frames received
  Throughput: 1.91M req/s
  Bandwidth:  12.89MB/s
  WS upgrades: 6585
  WS frames:   9552982
  Latency samples: 9552982 / 9552982 responses (100.0%)
[info] CPU 6663.2% | Mem 374MiB

[run 3/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   38.16ms   39.50ms   56.20ms   63.40ms   84.70ms

  9634241 frames sent in 5.00s, 9524161 frames received
  Throughput: 1.90M req/s
  Bandwidth:  12.86MB/s
  WS upgrades: 6880
  WS frames:   9524161
  Latency samples: 9524161 / 9524161 responses (100.0%)
[info] CPU 6437.6% | Mem 385MiB

=== Best: 1953710 req/s (CPU: 6329.1%, Mem: 332MiB) ===
[info] saved results/echo-ws-pipeline/16384/roadrunner.json
httparena-bench-roadrunner
httparena-bench-roadrunner
[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/api-16-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/api-4-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/async-db-1024.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/baseline-h2-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2c-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2c-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2c-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h3-64.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/crud-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-16384.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-pipeline-16384.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-pipeline-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-pipeline-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/fortunes-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-16384.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-h2c-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-h2c-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-tls-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/static-h2-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-h2-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-h3-64.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
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536

@williamthome

Copy link
Copy Markdown
Contributor Author

@MDA2AV PR is mergeable


%% Cache stores the already-encoded JSON body, so a cache hit ships the
%% bytes verbatim instead of re-encoding the item map every request;
%% `roadrunner_resp:body/4` folds in the `x-cache` marker in one call.

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where is 200ms TTL being evaluated?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch. You are right, I missed it. Thanks for checking it out. I'll revisit the spec to ensure code is 100% aligned with it.

@williamthome williamthome marked this pull request as draft June 29, 2026 12:26
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