Skip to content

make ring-http-exchange async #697

Open
ruroru wants to merge 2 commits into
MDA2AV:mainfrom
ruroru:update-ring-http-exchange
Open

make ring-http-exchange async #697
ruroru wants to merge 2 commits into
MDA2AV:mainfrom
ruroru:update-ring-http-exchange

Conversation

@ruroru
Copy link
Copy Markdown
Contributor

@ruroru ruroru commented May 8, 2026

No description provided.

@ruroru ruroru force-pushed the update-ring-http-exchange branch 5 times, most recently from 12bd044 to 5d16572 Compare May 9, 2026 00:05
@ruroru
Copy link
Copy Markdown
Contributor Author

ruroru commented May 9, 2026

/benchmark -f ring-http-exchange

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 9, 2026

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

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 9, 2026

Benchmark Results

Framework: ring-http-exchange | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 1,166,488 6138.0% 13.6GiB -11.6% +7.9%
baseline 4096 1,137,627 6228.9% 13.0GiB -8.1% ~0%
limited-conn 512 835,466 6270.7% 13.4GiB -4.8% ~0%
limited-conn 4096 835,831 5714.1% 12.8GiB -6.7% ~0%
json 4096 432,380 5919.7% 13.0GiB -7.4% -7.1%
json-comp 512 18,836 630.3% 791MiB +0.3% -1.4%
json-comp 4096 139,601 4357.4% 14.2GiB -1.3% +118.5%
json-comp 16384 221,286 6652.4% 15.2GiB +0.1% +1.3%
json-tls 4096 431,062 6390.3% 13.9GiB -6.4% -2.8%
upload 32 2,690 2492.7% 387MiB -0.9% +10.6%
upload 256 2,875 4549.1% 390MiB -0.9% -0.5%
api-4 256 32,025 409.6% 856MiB +1.7% +18.9%
api-16 1024 77,597 1720.1% 3.5GiB +0.8% +133.3%
static 1024 222,263 6671.1% 4.8GiB -5.7% ~0%
static 4096 220,975 6406.6% 4.9GiB -1.9% ~0%
static 6800 213,607 6545.9% 4.9GiB -5.3% ~0%
async-db 1024 109,367 5126.9% 5.1GiB +40.5% +8.5%
crud 4096 209,976 5188.5% 12.9GiB -35.1% +0.8%
Full log
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   10.86ms   8.87ms   11.70ms   38.70ms   598.80ms

  933584 requests in 10.00s, 933586 responses
  Throughput: 93.34K req/s
  Bandwidth:  358.41MB/s
  Status codes: 2xx=933586, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 933586 / 933586 responses (100.0%)
  Reconnects: 36993
  Per-template: 186556,186908,187105,186719,186298
  Per-template-ok: 186556,186908,187105,186719,186298
[info] CPU 5401.0% | Mem 5.1GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   9.17ms   8.93ms   10.70ms   14.10ms   19.10ms

  1087853 requests in 10.00s, 1087854 responses
  Throughput: 108.76K req/s
  Bandwidth:  417.86MB/s
  Status codes: 2xx=1087854, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 1087853 / 1087854 responses (100.0%)
  Reconnects: 43055
  Per-template: 217563,217532,217697,217462,217599
  Per-template-ok: 217563,217532,217697,217462,217599
[info] CPU 5131.4% | Mem 5.1GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   9.10ms   8.85ms   10.70ms   14.00ms   18.20ms

  1093677 requests in 10.00s, 1093678 responses
  Throughput: 109.34K req/s
  Bandwidth:  420.00MB/s
  Status codes: 2xx=1093678, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 1093678 / 1093678 responses (100.0%)
  Reconnects: 43571
  Per-template: 219069,218485,218766,218765,218593
  Per-template-ok: 219069,218485,218766,218765,218593
[info] CPU 5126.9% | Mem 5.1GiB

=== Best: 109367 req/s (CPU: 5126.9%, Mem: 5.1GiB) ===
[info] input BW: 7.30MB/s (avg template: 70 bytes)
[info] saved results/async-db/1024/ring-http-exchange.json
httparena-bench-ring-http-exchange
httparena-bench-ring-http-exchange

==============================================
=== ring-http-exchange / crud / 4096c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   23.27ms   27.00ms   30.50ms   77.50ms   692.60ms

  2634492 requests in 15.00s, 2634048 responses
  Throughput: 175.57K req/s
  Bandwidth:  62.69MB/s
  Status codes: 2xx=2634048, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2634048 / 2634048 responses (100.0%)
  Reconnects: 11120
  Per-template: 94975,102323,122505,125837,146619,146303,146387,145973,146345,146244,146494,146518,146818,146449,146170,146222,135681,107092,94247,94846
  Per-template-ok: 94975,102323,122505,125837,146619,146303,146387,145973,146345,146244,146494,146518,146818,146449,146170,146222,135681,107092,94247,94846
[info] CPU 5059.9% | Mem 14.2GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   19.74ms   26.40ms   28.70ms   38.30ms   102.00ms

  3102573 requests in 15.00s, 3102573 responses
  Throughput: 206.80K req/s
  Bandwidth:  73.65MB/s
  Status codes: 2xx=3102573, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 3102573 / 3102573 responses (100.0%)
  Reconnects: 14055
  Per-template: 110364,122577,126855,149070,163417,173983,173797,173475,173480,173627,174221,173259,173569,173861,173092,173217,159289,138885,112277,110258
  Per-template-ok: 110364,122577,126855,149070,163417,173983,173797,173475,173480,173627,174221,173259,173569,173861,173092,173217,159289,138885,112277,110258
[info] CPU 5080.3% | Mem 13.9GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   19.49ms   26.10ms   28.60ms   38.10ms   103.00ms

  3149646 requests in 15.00s, 3149646 responses
  Throughput: 209.94K req/s
  Bandwidth:  75.03MB/s
  Status codes: 2xx=3149646, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 3149646 / 3149646 responses (100.0%)
  Reconnects: 14106
  Per-template: 111645,122600,128420,151838,163874,176482,175933,176060,175904,176338,175870,176401,176486,176782,176400,176231,164563,140668,115533,111618
  Per-template-ok: 111645,122600,128420,151838,163874,176482,175933,176060,175904,176338,175870,176401,176486,176782,176400,176231,164563,140668,115533,111618
[info] CPU 5188.5% | Mem 12.9GiB

=== Best: 209976 req/s (CPU: 5188.5%, Mem: 12.9GiB) ===
[info] input BW: 18.02MB/s (avg template: 90 bytes)
[info] saved results/crud/4096/ring-http-exchange.json
httparena-bench-ring-http-exchange
httparena-bench-ring-http-exchange
[info] skip: ring-http-exchange does not subscribe to fortunes
[info] skip: ring-http-exchange does not subscribe to baseline-h2
[info] skip: ring-http-exchange does not subscribe to static-h2
[info] skip: ring-http-exchange does not subscribe to baseline-h2c
[info] skip: ring-http-exchange does not subscribe to json-h2c
[info] skip: ring-http-exchange does not subscribe to baseline-h3
[info] skip: ring-http-exchange does not subscribe to static-h3
[info] skip: ring-http-exchange does not subscribe to gateway-64
[info] skip: ring-http-exchange does not subscribe to gateway-h3
[info] skip: ring-http-exchange does not subscribe to production-stack
[info] skip: ring-http-exchange does not subscribe to unary-grpc
[info] skip: ring-http-exchange does not subscribe to unary-grpc-tls
[info] skip: ring-http-exchange does not subscribe to stream-grpc
[info] skip: ring-http-exchange does not subscribe to stream-grpc-tls
[info] skip: ring-http-exchange does not subscribe to echo-ws
[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/crud-4096.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-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/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
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536
[info] restoring CPU governor → powersave

@ruroru ruroru changed the title make ring-http-exchange async make ring-http-exchange async // Dont merge yet May 9, 2026
@ruroru ruroru force-pushed the update-ring-http-exchange branch from 5d16572 to 8184457 Compare May 9, 2026 11:31
@ruroru
Copy link
Copy Markdown
Contributor Author

ruroru commented May 9, 2026

/benchmark -f ring-http-exchange

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 9, 2026

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

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 9, 2026

Benchmark Results

Framework: ring-http-exchange | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 1,149,047 6209.7% 12.5GiB -12.9% -0.8%
baseline 4096 1,147,417 6482.7% 13.7GiB -7.3% +5.4%
limited-conn 512 838,674 6061.1% 12.8GiB -4.4% -4.5%
limited-conn 4096 816,727 6053.1% 13.4GiB -8.8% +4.7%
json 4096 430,792 5427.2% 13.7GiB -7.8% -2.1%
json-comp 512 18,822 637.8% 1.8GiB +0.2% +129.8%
json-comp 4096 139,951 4314.7% 14.2GiB -1.0% +118.5%
json-comp 16384 222,616 6591.8% 15.2GiB +0.7% +1.3%
json-tls 4096 431,669 6447.1% 13.9GiB -6.2% -2.8%
upload 32 2,715 2403.3% 389MiB ~0% +11.1%
upload 256 2,875 4432.6% 408MiB -0.9% +4.1%
api-4 256 32,081 410.3% 811MiB +1.9% +12.6%
api-16 1024 76,774 1718.0% 3.4GiB -0.2% +126.7%
static 1024 218,901 6613.1% 4.4GiB -7.1% -8.3%
static 4096 219,171 6526.8% 4.8GiB -2.7% -2.0%
static 6800 217,873 6489.9% 4.9GiB -3.4% ~0%
async-db 1024 108,768 5075.4% 5.0GiB +39.7% +6.4%
crud 4096 207,639 5145.8% 13.0GiB -35.8% +1.6%
Full log
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   10.95ms   8.75ms   11.30ms   40.50ms   648.40ms

  918052 requests in 10.00s, 918052 responses
  Throughput: 91.78K req/s
  Bandwidth:  352.34MB/s
  Status codes: 2xx=918052, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 918052 / 918052 responses (100.0%)
  Reconnects: 36111
  Per-template: 183565,184031,183865,183379,183212
  Per-template-ok: 183565,184031,183865,183379,183212
[info] CPU 5506.7% | Mem 5.1GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   9.26ms   9.01ms   10.90ms   14.20ms   19.10ms

  1080921 requests in 10.00s, 1080922 responses
  Throughput: 108.07K req/s
  Bandwidth:  415.34MB/s
  Status codes: 2xx=1080922, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 1080921 / 1080922 responses (100.0%)
  Reconnects: 43028
  Per-template: 216379,215937,215936,216144,216525
  Per-template-ok: 216379,215937,215936,216144,216525
[info] CPU 5075.9% | Mem 5.1GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   9.19ms   8.95ms   10.80ms   14.10ms   18.10ms

  1087688 requests in 10.00s, 1087688 responses
  Throughput: 108.75K req/s
  Bandwidth:  417.82MB/s
  Status codes: 2xx=1087688, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 1087686 / 1087688 responses (100.0%)
  Reconnects: 43098
  Per-template: 217958,217316,217162,217507,217743
  Per-template-ok: 217958,217316,217162,217507,217743
[info] CPU 5075.4% | Mem 5.0GiB

=== Best: 108768 req/s (CPU: 5075.4%, Mem: 5.0GiB) ===
[info] input BW: 7.26MB/s (avg template: 70 bytes)
[info] saved results/async-db/1024/ring-http-exchange.json
httparena-bench-ring-http-exchange
httparena-bench-ring-http-exchange

==============================================
=== ring-http-exchange / crud / 4096c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   23.14ms   26.90ms   30.50ms   78.30ms   803.80ms

  2650161 requests in 15.00s, 2649965 responses
  Throughput: 176.63K req/s
  Bandwidth:  63.13MB/s
  Status codes: 2xx=2649965, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2649965 / 2649965 responses (100.0%)
  Reconnects: 11144
  Per-template: 95401,103210,122769,126441,146964,147432,147507,147865,146918,147062,146802,146782,146673,147365,147563,147403,137286,108646,94672,95204
  Per-template-ok: 95401,103210,122769,126441,146964,147432,147507,147865,146918,147062,146802,146782,146673,147365,147563,147403,137286,108646,94672,95204
[info] CPU 5062.0% | Mem 14.2GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   19.94ms   26.50ms   28.90ms   39.10ms   208.90ms

  3068967 requests in 15.00s, 3068967 responses
  Throughput: 204.56K req/s
  Bandwidth:  72.83MB/s
  Status codes: 2xx=3068967, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 3068967 / 3068967 responses (100.0%)
  Reconnects: 13945
  Per-template: 109218,122353,124668,147519,163352,171713,171307,171525,171640,171735,172149,171429,172135,171300,170827,171613,157322,137719,110416,109027
  Per-template-ok: 109218,122353,124668,147519,163352,171713,171307,171525,171640,171735,172149,171429,172135,171300,170827,171613,157322,137719,110416,109027
[info] CPU 4994.1% | Mem 13.9GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   19.68ms   26.30ms   28.80ms   39.00ms   92.20ms

  3114596 requests in 15.00s, 3114596 responses
  Throughput: 207.60K req/s
  Bandwidth:  74.06MB/s
  Status codes: 2xx=3114596, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 3114596 / 3114596 responses (100.0%)
  Reconnects: 14076
  Per-template: 110965,122777,127288,150835,164000,175146,174002,174684,173940,173306,173151,174287,173673,173679,173480,174439,161323,139674,113170,110777
  Per-template-ok: 110965,122777,127288,150835,164000,175146,174002,174684,173940,173306,173151,174287,173673,173679,173480,174439,161323,139674,113170,110777
[info] CPU 5145.8% | Mem 13.0GiB

=== Best: 207639 req/s (CPU: 5145.8%, Mem: 13.0GiB) ===
[info] input BW: 17.82MB/s (avg template: 90 bytes)
[info] saved results/crud/4096/ring-http-exchange.json
httparena-bench-ring-http-exchange
httparena-bench-ring-http-exchange
[info] skip: ring-http-exchange does not subscribe to fortunes
[info] skip: ring-http-exchange does not subscribe to baseline-h2
[info] skip: ring-http-exchange does not subscribe to static-h2
[info] skip: ring-http-exchange does not subscribe to baseline-h2c
[info] skip: ring-http-exchange does not subscribe to json-h2c
[info] skip: ring-http-exchange does not subscribe to baseline-h3
[info] skip: ring-http-exchange does not subscribe to static-h3
[info] skip: ring-http-exchange does not subscribe to gateway-64
[info] skip: ring-http-exchange does not subscribe to gateway-h3
[info] skip: ring-http-exchange does not subscribe to production-stack
[info] skip: ring-http-exchange does not subscribe to unary-grpc
[info] skip: ring-http-exchange does not subscribe to unary-grpc-tls
[info] skip: ring-http-exchange does not subscribe to stream-grpc
[info] skip: ring-http-exchange does not subscribe to stream-grpc-tls
[info] skip: ring-http-exchange does not subscribe to echo-ws
[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/crud-4096.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-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/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
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536
[info] restoring CPU governor → powersave

@ruroru ruroru force-pushed the update-ring-http-exchange branch from 8184457 to 44a8f2c Compare May 9, 2026 11:44
@ruroru
Copy link
Copy Markdown
Contributor Author

ruroru commented May 9, 2026

/benchmark -f ring-http-exchange

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 9, 2026

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

@ruroru ruroru changed the title make ring-http-exchange async // Dont merge yet make ring-http-exchange async May 9, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 9, 2026

Benchmark Results

Framework: ring-http-exchange | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 1,147,781 6333.7% 13.6GiB -13.0% +7.9%
baseline 4096 1,152,015 6272.8% 13.0GiB -6.9% ~0%
limited-conn 512 851,966 6194.4% 13.4GiB -2.9% ~0%
limited-conn 4096 822,447 5751.2% 12.8GiB -8.2% ~0%
json 4096 435,456 5535.3% 13.7GiB -6.8% -2.1%
json-comp 512 18,804 693.0% 796MiB +0.1% -0.7%
json-comp 4096 139,597 4718.6% 8.9GiB -1.3% +36.9%
json-comp 16384 221,287 6629.3% 15.5GiB +0.1% +3.3%
json-tls 4096 429,833 6389.3% 13.9GiB -6.6% -2.8%
upload 32 2,686 2408.6% 386MiB -1.1% +10.3%
upload 256 2,871 4568.3% 414MiB -1.0% +5.6%
api-4 256 31,850 409.7% 788MiB +1.1% +9.4%
api-16 1024 75,123 1718.6% 1.9GiB -2.4% +26.7%
static 1024 229,867 6613.1% 4.7GiB -2.5% -2.1%
static 4096 216,994 6592.7% 4.9GiB -3.7% ~0%
static 6800 215,333 6530.5% 4.9GiB -4.5% ~0%
async-db 1024 109,437 5165.8% 5.1GiB +40.6% +8.5%
crud 4096 206,683 5225.3% 13.9GiB -36.1% +8.6%
fortunes 1024 52,599 3384.5% 5.1GiB NEW NEW
Full log
=== ring-http-exchange / crud / 4096c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   23.52ms   27.10ms   31.00ms   80.80ms   756.50ms

  2609563 requests in 15.00s, 2607963 responses
  Throughput: 173.83K req/s
  Bandwidth:  62.05MB/s
  Status codes: 2xx=2607963, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2607963 / 2607963 responses (100.0%)
  Reconnects: 11031
  Per-template: 94230,101347,122411,125002,145025,145128,144783,144414,144663,144468,144697,144546,144976,144728,144105,144778,134286,106626,93669,94081
  Per-template-ok: 94230,101347,122411,125002,145025,145128,144783,144414,144663,144468,144697,144546,144976,144728,144105,144778,134286,106626,93669,94081
[info] CPU 5241.7% | Mem 14.3GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   19.76ms   26.40ms   28.90ms   39.20ms   91.60ms

  3100381 requests in 15.00s, 3100253 responses
  Throughput: 206.65K req/s
  Bandwidth:  73.69MB/s
  Status codes: 2xx=3100253, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 3100253 / 3100253 responses (100.0%)
  Reconnects: 14051
  Per-template: 110493,122614,125888,149537,163960,173215,173254,173155,173006,173447,173639,173425,173337,173254,173349,173043,160297,138667,112443,110230
  Per-template-ok: 110493,122614,125888,149537,163960,173215,173254,173155,173006,173447,173639,173425,173337,173254,173349,173043,160297,138667,112443,110230
[info] CPU 5225.3% | Mem 13.9GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   20.19ms   26.90ms   29.50ms   39.40ms   98.20ms

  3036470 requests in 15.00s, 3036470 responses
  Throughput: 202.39K req/s
  Bandwidth:  72.03MB/s
  Status codes: 2xx=3036470, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 3036470 / 3036470 responses (100.0%)
  Reconnects: 13730
  Per-template: 108701,122285,124456,146519,163469,168950,169224,169428,168804,169364,169282,168896,169398,169461,169498,169169,155487,136501,109032,108546
  Per-template-ok: 108701,122285,124456,146519,163469,168950,169224,169428,168804,169364,169282,168896,169398,169461,169498,169169,155487,136501,109032,108546
[info] CPU 5141.8% | Mem 12.7GiB

=== Best: 206683 req/s (CPU: 5225.3%, Mem: 13.9GiB) ===
[info] input BW: 17.74MB/s (avg template: 90 bytes)
[info] saved results/crud/4096/ring-http-exchange.json
httparena-bench-ring-http-exchange
httparena-bench-ring-http-exchange

==============================================
=== ring-http-exchange / fortunes / 1024c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   26.78ms   19.60ms   33.20ms   113.80ms   781.20ms

  192126 requests in 5.00s, 192126 responses
  Throughput: 38.41K req/s
  Bandwidth:  96.31MB/s
  Status codes: 2xx=192126, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 192126 / 192126 responses (100.0%)
[info] CPU 3877.7% | Mem 5.2GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   19.49ms   18.10ms   27.70ms   40.00ms   58.30ms

  262382 requests in 5.00s, 262382 responses
  Throughput: 52.46K req/s
  Bandwidth:  131.52MB/s
  Status codes: 2xx=262382, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 262379 / 262382 responses (100.0%)
[info] CPU 3417.8% | Mem 5.2GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   19.44ms   18.00ms   27.60ms   39.90ms   57.50ms

  262999 requests in 5.00s, 262999 responses
  Throughput: 52.58K req/s
  Bandwidth:  131.83MB/s
  Status codes: 2xx=262999, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 262999 / 262999 responses (100.0%)
[info] CPU 3384.5% | Mem 5.1GiB

=== Best: 52599 req/s (CPU: 3384.5%, Mem: 5.1GiB) ===
[info] saved results/fortunes/1024/ring-http-exchange.json
httparena-bench-ring-http-exchange
httparena-bench-ring-http-exchange
[info] skip: ring-http-exchange does not subscribe to baseline-h2
[info] skip: ring-http-exchange does not subscribe to static-h2
[info] skip: ring-http-exchange does not subscribe to baseline-h2c
[info] skip: ring-http-exchange does not subscribe to json-h2c
[info] skip: ring-http-exchange does not subscribe to baseline-h3
[info] skip: ring-http-exchange does not subscribe to static-h3
[info] skip: ring-http-exchange does not subscribe to gateway-64
[info] skip: ring-http-exchange does not subscribe to gateway-h3
[info] skip: ring-http-exchange does not subscribe to production-stack
[info] skip: ring-http-exchange does not subscribe to unary-grpc
[info] skip: ring-http-exchange does not subscribe to unary-grpc-tls
[info] skip: ring-http-exchange does not subscribe to stream-grpc
[info] skip: ring-http-exchange does not subscribe to stream-grpc-tls
[info] skip: ring-http-exchange does not subscribe to echo-ws
[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/crud-4096.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-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/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
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536
[info] restoring CPU governor → powersave

@ruroru ruroru force-pushed the update-ring-http-exchange branch from 44a8f2c to 9023028 Compare May 9, 2026 12:12
@ruroru
Copy link
Copy Markdown
Contributor Author

ruroru commented May 9, 2026

/benchmark -f ring-http-exchange -t fortunes

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 9, 2026

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

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 9, 2026

Benchmark Results

Framework: ring-http-exchange | Test: fortunes

Test Conn RPS CPU Mem Δ RPS Δ Mem
fortunes 1024 49,522 3345.2% 6.3GiB NEW NEW
Full log
[info] available CPUs: 128
[info] framework: ring-http-exchange (ring-http-exchange, Clojure)
[info] subscribed tests: baseline,limited-conn,json,json-comp,upload,short-lived,mixed,json-tls,api-4,api-16,async-db,sync-db,static,tcp-frag,fortunes,crud
[info] building image: httparena-ring-http-exchange
#0 building with "default" instance using docker driver

#1 [internal] load build definition from Dockerfile
#1 transferring dockerfile: 409B done
#1 DONE 0.0s

#2 [internal] load metadata for docker.io/library/clojure:temurin-26-lein-trixie
#2 ...

#3 [internal] load metadata for docker.io/library/eclipse-temurin:26-jre
#3 DONE 0.4s

#2 [internal] load metadata for docker.io/library/clojure:temurin-26-lein-trixie
#2 DONE 0.4s

#4 [internal] load .dockerignore
#4 transferring context: 2B done
#4 DONE 0.0s

#5 [internal] load build context
#5 DONE 0.0s

#6 [stage-1 1/4] FROM docker.io/library/eclipse-temurin:26-jre@sha256:ebb7f006e9e5b8a5267b5910eb907922b99c251d702755e3cf3d9e2a2270090c
#6 resolve docker.io/library/eclipse-temurin:26-jre@sha256:ebb7f006e9e5b8a5267b5910eb907922b99c251d702755e3cf3d9e2a2270090c 0.1s done
#6 DONE 0.1s

#7 [builder 1/7] FROM docker.io/library/clojure:temurin-26-lein-trixie@sha256:26e6855f0e20f4674afee2faa58729b1bec779e77bd0726ee0527a15ce2372b1
#7 resolve docker.io/library/clojure:temurin-26-lein-trixie@sha256:26e6855f0e20f4674afee2faa58729b1bec779e77bd0726ee0527a15ce2372b1 0.1s done
#7 DONE 0.1s

#5 [internal] load build context
#5 transferring context: 526B done
#5 DONE 0.0s

#8 [builder 4/7] COPY resources ./resources
#8 CACHED

#9 [stage-1 2/4] RUN mkdir -p /data/static
#9 CACHED

#10 [builder 2/7] WORKDIR /app
#10 CACHED

#11 [builder 3/7] COPY project.clj ./
#11 CACHED

#12 [builder 6/7] COPY src ./src
#12 CACHED

#13 [builder 7/7] RUN lein with-profile uberjar uberjar
#13 CACHED

#14 [stage-1 3/4] WORKDIR /app
#14 CACHED

#15 [builder 5/7] RUN lein deps
#15 CACHED

#16 [stage-1 4/4] COPY --from=builder /app/target/ring-0.1.0-standalone.jar /app/app.jar
#16 CACHED

#17 exporting to image
#17 exporting layers done
#17 exporting manifest sha256:4a0800c39fc37926923487defa36a9b415400385a8705596b73b48a7e0f70568 done
#17 exporting config sha256:eb6652041fd2e75d7fe7c4da47f655c3a4cb9603975c609d0959ded9dcf5f2c8 done
#17 exporting attestation manifest sha256:5cc2b25bca4875306abb2753aa9db49f973f27494dfd6fd26776e20a79af6510 0.1s done
#17 exporting manifest list sha256:1659f4021bf9ccfcfe4776483aac6981ac2f4abe53319f4c8e014fa8229e8f70
#17 exporting manifest list sha256:1659f4021bf9ccfcfe4776483aac6981ac2f4abe53319f4c8e014fa8229e8f70 0.0s done
#17 naming to docker.io/library/httparena-ring-http-exchange:latest done
#17 unpacking to docker.io/library/httparena-ring-http-exchange:latest done
#17 DONE 0.2s
[info] tuning host for benchmark runs
[info] CPU governor → performance
[info] setting kernel socket limits
[info] setting UDP buffer sizes for QUIC
[info] setting loopback MTU to 1500 (realistic Ethernet)
[info] restarting docker daemon
[info] dropping kernel caches
[info] starting postgres sidecar
[info] postgres ready (seeded)
[info] starting redis sidecar (cpuset=0,64)
[info] redis ready

==============================================
=== ring-http-exchange / fortunes / 1024c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   32.65ms    861us   80.10ms   305.70ms    1.21s

  157073 requests in 5.00s, 157073 responses
  Throughput: 31.40K req/s
  Bandwidth:  78.74MB/s
  Status codes: 2xx=157073, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 157073 / 157073 responses (100.0%)
[info] CPU 3986.3% | Mem 5.3GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   21.05ms    721us   74.40ms   142.80ms   161.10ms

  241942 requests in 5.00s, 241942 responses
  Throughput: 48.37K req/s
  Bandwidth:  121.28MB/s
  Status codes: 2xx=241942, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 241938 / 241942 responses (100.0%)
[info] CPU 3239.6% | Mem 5.2GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   20.61ms    722us   76.00ms   144.90ms   164.20ms

  247614 requests in 5.00s, 247614 responses
  Throughput: 49.51K req/s
  Bandwidth:  124.12MB/s
  Status codes: 2xx=247614, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 247613 / 247614 responses (100.0%)
[info] CPU 3345.2% | Mem 6.3GiB

=== Best: 49522 req/s (CPU: 3345.2%, Mem: 6.3GiB) ===
[info] saved results/fortunes/1024/ring-http-exchange.json
httparena-bench-ring-http-exchange
httparena-bench-ring-http-exchange
[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/fortunes-1024.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
[info] restoring CPU governor → powersave

@ruroru ruroru force-pushed the update-ring-http-exchange branch from 9023028 to 4a59314 Compare May 9, 2026 12:30
@ruroru
Copy link
Copy Markdown
Contributor Author

ruroru commented May 9, 2026

/benchmark -f ring-http-exchange -t fortunes

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 9, 2026

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

@ruroru ruroru force-pushed the update-ring-http-exchange branch from 4a59314 to 9183e1c Compare May 9, 2026 12:33
@ruroru
Copy link
Copy Markdown
Contributor Author

ruroru commented May 9, 2026

/benchmark -f ring-http-exchange -t fortunes

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 9, 2026

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

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 9, 2026

Benchmark Results

Framework: ring-http-exchange | Test: fortunes

Test Conn RPS CPU Mem Δ RPS Δ Mem
fortunes 1024 48,119 2964.2% 5.1GiB NEW NEW
Full log
[info] available CPUs: 128
[info] framework: ring-http-exchange (ring-http-exchange, Clojure)
[info] subscribed tests: baseline,limited-conn,json,json-comp,upload,short-lived,mixed,json-tls,api-4,api-16,async-db,sync-db,static,tcp-frag,fortunes,crud
[info] building image: httparena-ring-http-exchange
#0 building with "default" instance using docker driver

#1 [internal] load build definition from Dockerfile
#1 transferring dockerfile: 409B done
#1 DONE 0.0s

#2 [internal] load metadata for docker.io/library/eclipse-temurin:26-jre
#2 DONE 0.7s

#3 [internal] load metadata for docker.io/library/clojure:temurin-26-lein-trixie
#3 DONE 0.7s

#4 [internal] load .dockerignore
#4 transferring context: 2B done
#4 DONE 0.0s

#5 [internal] load build context
#5 DONE 0.0s

#6 [builder 1/7] FROM docker.io/library/clojure:temurin-26-lein-trixie@sha256:26e6855f0e20f4674afee2faa58729b1bec779e77bd0726ee0527a15ce2372b1
#6 resolve docker.io/library/clojure:temurin-26-lein-trixie@sha256:26e6855f0e20f4674afee2faa58729b1bec779e77bd0726ee0527a15ce2372b1 0.0s done
#6 DONE 0.1s

#7 [stage-1 1/4] FROM docker.io/library/eclipse-temurin:26-jre@sha256:ebb7f006e9e5b8a5267b5910eb907922b99c251d702755e3cf3d9e2a2270090c
#7 resolve docker.io/library/eclipse-temurin:26-jre@sha256:ebb7f006e9e5b8a5267b5910eb907922b99c251d702755e3cf3d9e2a2270090c 0.1s done
#7 DONE 0.1s

#5 [internal] load build context
#5 transferring context: 526B done
#5 DONE 0.0s

#8 [builder 3/7] COPY project.clj ./
#8 CACHED

#9 [stage-1 3/4] WORKDIR /app
#9 CACHED

#10 [builder 5/7] RUN lein deps
#10 CACHED

#11 [builder 7/7] RUN lein with-profile uberjar uberjar
#11 CACHED

#12 [builder 6/7] COPY src ./src
#12 CACHED

#13 [stage-1 2/4] RUN mkdir -p /data/static
#13 CACHED

#14 [builder 2/7] WORKDIR /app
#14 CACHED

#15 [builder 4/7] COPY resources ./resources
#15 CACHED

#16 [stage-1 4/4] COPY --from=builder /app/target/ring-0.1.0-standalone.jar /app/app.jar
#16 CACHED

#17 exporting to image
#17 exporting layers done
#17 exporting manifest sha256:02c47825ade7777719c2e229882c6c42e67bd952f14158d9fc20499ba68cc69c done
#17 exporting config sha256:96aba21c0992905db594d92818603e673fa31fbb701151a34caef40ff32f9949 done
#17 exporting attestation manifest sha256:e74f2d1ea656028b61262fc0961d0609e775beeffafe0dd87f45968d8ab9c985 0.0s done
#17 exporting manifest list sha256:3fbe66ba2e16703855298c2221c0c11c6b230c8d32676a5e7050d3784c977e28 0.0s done
#17 naming to docker.io/library/httparena-ring-http-exchange:latest
#17 naming to docker.io/library/httparena-ring-http-exchange:latest done
#17 unpacking to docker.io/library/httparena-ring-http-exchange:latest done
#17 DONE 0.1s
[info] tuning host for benchmark runs
[info] CPU governor → performance
[info] setting kernel socket limits
[info] setting UDP buffer sizes for QUIC
[info] setting loopback MTU to 1500 (realistic Ethernet)
[info] restarting docker daemon
[info] dropping kernel caches
[info] starting postgres sidecar
[info] postgres ready (seeded)
[info] starting redis sidecar (cpuset=0,64)
[info] redis ready

==============================================
=== ring-http-exchange / fortunes / 1024c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   36.11ms   26.00ms   62.00ms   178.70ms   769.30ms

  141661 requests in 5.00s, 141661 responses
  Throughput: 28.32K req/s
  Bandwidth:  71.76MB/s
  Status codes: 2xx=141661, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 141661 / 141661 responses (100.0%)
[info] CPU 2982.7% | Mem 5.2GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   29.11ms   26.60ms   48.30ms   77.00ms   108.20ms

  173672 requests in 5.00s, 173672 responses
  Throughput: 34.72K req/s
  Bandwidth:  87.32MB/s
  Status codes: 2xx=173672, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 173672 / 173672 responses (100.0%)
[info] CPU 1931.3% | Mem 5.1GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   20.87ms   15.00ms   50.90ms   66.00ms   83.50ms

  240595 requests in 5.00s, 240595 responses
  Throughput: 48.10K req/s
  Bandwidth:  121.23MB/s
  Status codes: 2xx=240595, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 240595 / 240595 responses (100.0%)
[info] CPU 2964.2% | Mem 5.1GiB

=== Best: 48119 req/s (CPU: 2964.2%, Mem: 5.1GiB) ===
[info] saved results/fortunes/1024/ring-http-exchange.json
httparena-bench-ring-http-exchange
httparena-bench-ring-http-exchange
[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/fortunes-1024.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
[info] restoring CPU governor → powersave

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 9, 2026

Benchmark Results

Framework: ring-http-exchange | Test: fortunes

Test Conn RPS CPU Mem Δ RPS Δ Mem
fortunes 1024 50,585 2896.6% 5.0GiB NEW NEW
Full log
[info] available CPUs: 128
[info] framework: ring-http-exchange (ring-http-exchange, Clojure)
[info] subscribed tests: baseline,limited-conn,json,json-comp,upload,short-lived,mixed,json-tls,api-4,api-16,async-db,sync-db,static,tcp-frag,fortunes,crud
[info] building image: httparena-ring-http-exchange
#0 building with "default" instance using docker driver

#1 [internal] load build definition from Dockerfile
#1 transferring dockerfile: 409B done
#1 DONE 0.1s

#2 [internal] load metadata for docker.io/library/clojure:temurin-26-lein-trixie
#2 ...

#3 [internal] load metadata for docker.io/library/eclipse-temurin:26-jre
#3 DONE 0.8s

#2 [internal] load metadata for docker.io/library/clojure:temurin-26-lein-trixie
#2 DONE 1.0s

#4 [internal] load .dockerignore
#4 transferring context: 2B done
#4 DONE 0.1s

#5 [internal] load build context
#5 DONE 0.0s

#6 [stage-1 1/4] FROM docker.io/library/eclipse-temurin:26-jre@sha256:ebb7f006e9e5b8a5267b5910eb907922b99c251d702755e3cf3d9e2a2270090c
#6 resolve docker.io/library/eclipse-temurin:26-jre@sha256:ebb7f006e9e5b8a5267b5910eb907922b99c251d702755e3cf3d9e2a2270090c
#6 resolve docker.io/library/eclipse-temurin:26-jre@sha256:ebb7f006e9e5b8a5267b5910eb907922b99c251d702755e3cf3d9e2a2270090c 0.2s done
#6 DONE 0.2s

#7 [builder 1/7] FROM docker.io/library/clojure:temurin-26-lein-trixie@sha256:26e6855f0e20f4674afee2faa58729b1bec779e77bd0726ee0527a15ce2372b1
#7 resolve docker.io/library/clojure:temurin-26-lein-trixie@sha256:26e6855f0e20f4674afee2faa58729b1bec779e77bd0726ee0527a15ce2372b1
#7 resolve docker.io/library/clojure:temurin-26-lein-trixie@sha256:26e6855f0e20f4674afee2faa58729b1bec779e77bd0726ee0527a15ce2372b1 0.2s done
#7 DONE 0.2s

#5 [internal] load build context
#5 transferring context: 526B 0.0s done
#5 DONE 0.1s

#8 [builder 2/7] WORKDIR /app
#8 CACHED

#9 [builder 5/7] RUN lein deps
#9 CACHED

#10 [builder 6/7] COPY src ./src
#10 CACHED

#11 [stage-1 2/4] RUN mkdir -p /data/static
#11 CACHED

#12 [builder 3/7] COPY project.clj ./
#12 CACHED

#13 [builder 7/7] RUN lein with-profile uberjar uberjar
#13 CACHED

#14 [stage-1 3/4] WORKDIR /app
#14 CACHED

#15 [builder 4/7] COPY resources ./resources
#15 CACHED

#16 [stage-1 4/4] COPY --from=builder /app/target/ring-0.1.0-standalone.jar /app/app.jar
#16 CACHED

#17 exporting to image
#17 exporting layers done
#17 exporting manifest sha256:02c47825ade7777719c2e229882c6c42e67bd952f14158d9fc20499ba68cc69c 0.0s done
#17 exporting config sha256:96aba21c0992905db594d92818603e673fa31fbb701151a34caef40ff32f9949 0.0s done
#17 exporting attestation manifest sha256:08957767f7aa56468ec79613dc3339ddfeb80ea43beeeef721fcad6ee7454b53
#17 exporting attestation manifest sha256:08957767f7aa56468ec79613dc3339ddfeb80ea43beeeef721fcad6ee7454b53 0.2s done
#17 exporting manifest list sha256:9121385095c3d2a56ee975d18b9c9b728205bea49fe6e543ed320f32765c7e6b
#17 exporting manifest list sha256:9121385095c3d2a56ee975d18b9c9b728205bea49fe6e543ed320f32765c7e6b 0.1s done
#17 naming to docker.io/library/httparena-ring-http-exchange:latest 0.0s done
#17 unpacking to docker.io/library/httparena-ring-http-exchange:latest
#17 unpacking to docker.io/library/httparena-ring-http-exchange:latest 0.0s done
#17 DONE 0.4s
[info] tuning host for benchmark runs
[info] CPU governor → performance
[info] setting kernel socket limits
[info] setting UDP buffer sizes for QUIC
[info] setting loopback MTU to 1500 (realistic Ethernet)
[info] restarting docker daemon
[info] dropping kernel caches
[info] starting postgres sidecar
[info] postgres ready (seeded)
[info] starting redis sidecar (cpuset=0,64)
[info] redis ready

==============================================
=== ring-http-exchange / fortunes / 1024c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   27.75ms   16.70ms   50.10ms   136.10ms   759.00ms

  183529 requests in 5.00s, 183529 responses
  Throughput: 36.69K req/s
  Bandwidth:  92.85MB/s
  Status codes: 2xx=183529, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 183529 / 183529 responses (100.0%)
[info] CPU 2887.3% | Mem 5.0GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   19.85ms   13.50ms   49.90ms   63.90ms   79.40ms

  252928 requests in 5.00s, 252928 responses
  Throughput: 50.57K req/s
  Bandwidth:  127.53MB/s
  Status codes: 2xx=252928, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 252927 / 252928 responses (100.0%)
[info] CPU 2896.6% | Mem 5.0GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   20.65ms   14.40ms   50.90ms   65.60ms   82.80ms

  243601 requests in 5.00s, 243601 responses
  Throughput: 48.70K req/s
  Bandwidth:  122.58MB/s
  Status codes: 2xx=243601, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 243600 / 243601 responses (100.0%)
[info] CPU 2696.9% | Mem 4.9GiB

=== Best: 50585 req/s (CPU: 2896.6%, Mem: 5.0GiB) ===
[info] saved results/fortunes/1024/ring-http-exchange.json
httparena-bench-ring-http-exchange
httparena-bench-ring-http-exchange
[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/fortunes-1024.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
[info] restoring CPU governor → powersave

@ruroru ruroru force-pushed the update-ring-http-exchange branch from 9183e1c to d7ae17f Compare May 9, 2026 13:34
@ruroru
Copy link
Copy Markdown
Contributor Author

ruroru commented May 9, 2026

/benchmark -f ring-http-exchange

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 9, 2026

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

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 9, 2026

Benchmark Results

Framework: ring-http-exchange | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 833,312 6526.2% 8.1GiB -36.8% -35.7%
baseline 4096 867,760 6464.8% 13.2GiB -29.9% +1.5%
limited-conn 512 732,459 6150.4% 4.7GiB -16.5% -64.9%
limited-conn 4096 797,719 6253.7% 13.6GiB -10.9% +6.2%
json 4096 430,153 5942.4% 12.6GiB -7.9% -10.0%
json-comp 512 18,832 730.4% 844MiB +0.3% +5.2%
json-comp 4096 139,060 5235.8% 5.3GiB -1.6% -18.5%
json-comp 16384 216,389 6621.6% 14.9GiB -2.1% -0.7%
json-tls 4096 438,424 6581.3% 14.4GiB -4.8% +0.7%
upload 32 2,680 2204.4% 440MiB -1.3% +25.7%
upload 256 2,873 3506.9% 415MiB -0.9% +5.9%
api-4 256 30,464 405.1% 817MiB -3.3% +13.5%
api-16 1024 71,094 1739.4% 3.6GiB -7.6% +140.0%
static 1024 213,226 6502.2% 4.4GiB -9.5% -8.3%
static 4096 204,797 6337.0% 2.8GiB -9.1% -42.9%
static 6800 207,342 6307.7% 5.0GiB -8.0% +2.0%
async-db 1024 98,713 4755.4% 4.9GiB +26.8% +4.3%
crud 4096 221,811 5292.0% 12.5GiB -31.5% -2.3%
fortunes 1024 47,975 2785.2% 5.0GiB NEW NEW
Full log
=== ring-http-exchange / crud / 4096c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   22.03ms   25.80ms   30.80ms   97.00ms   653.90ms

  2779174 requests in 15.00s, 2777254 responses
  Throughput: 185.12K req/s
  Bandwidth:  65.87MB/s
  Status codes: 2xx=2777254, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2777254 / 2777254 responses (100.0%)
  Reconnects: 11278
  Per-template: 99019,109408,122865,133212,155133,155418,155552,155200,154740,155637,154773,154462,155037,154784,155348,154849,140539,114371,98194,98713
  Per-template-ok: 99019,109408,122865,133212,155133,155418,155552,155200,154740,155637,154773,154462,155037,154784,155348,154849,140539,114371,98194,98713
[info] CPU 5179.7% | Mem 13.9GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   18.52ms   25.10ms   27.80ms   36.10ms   41.50ms

  3306156 requests in 15.00s, 3305836 responses
  Throughput: 220.35K req/s
  Bandwidth:  78.97MB/s
  Status codes: 2xx=3305836, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 3305834 / 3305836 responses (100.0%)
  Reconnects: 14212
  Per-template: 115995,122367,136227,160200,164070,186103,185704,186087,185917,186433,186102,185833,185770,185771,185410,186373,175004,146469,124058,115941
  Per-template-ok: 115995,122367,136227,160200,164070,186103,185704,186087,185917,186433,186102,185833,185770,185771,185410,186373,175004,146469,124058,115941
[info] CPU 5253.3% | Mem 13.6GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   18.41ms   25.00ms   27.50ms   36.90ms   40.60ms

  3327208 requests in 15.00s, 3327172 responses
  Throughput: 221.77K req/s
  Bandwidth:  79.47MB/s
  Status codes: 2xx=3327172, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 3327170 / 3327172 responses (100.0%)
  Reconnects: 14289
  Per-template: 116812,122475,137202,160677,164392,186984,186353,187140,187002,188421,186767,187432,186231,186722,187257,187281,176329,148509,126512,116672
  Per-template-ok: 116812,122475,137202,160677,164392,186984,186353,187140,187002,188421,186767,187432,186231,186722,187257,187281,176329,148509,126512,116672
[info] CPU 5292.0% | Mem 12.5GiB

=== Best: 221811 req/s (CPU: 5292.0%, Mem: 12.5GiB) ===
[info] input BW: 19.04MB/s (avg template: 90 bytes)
[info] saved results/crud/4096/ring-http-exchange.json
httparena-bench-ring-http-exchange
httparena-bench-ring-http-exchange

==============================================
=== ring-http-exchange / fortunes / 1024c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   29.89ms   19.60ms   53.80ms   153.90ms   685.20ms

  170840 requests in 5.00s, 170840 responses
  Throughput: 34.15K req/s
  Bandwidth:  86.44MB/s
  Status codes: 2xx=170840, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 170840 / 170840 responses (100.0%)
[info] CPU 2870.2% | Mem 5.1GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   21.06ms   15.50ms   51.00ms   65.10ms   80.40ms

  239875 requests in 5.00s, 239875 responses
  Throughput: 47.96K req/s
  Bandwidth:  121.00MB/s
  Status codes: 2xx=239875, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 239874 / 239875 responses (100.0%)
[info] CPU 2785.2% | Mem 5.0GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   24.47ms   20.30ms   49.00ms   70.00ms   86.00ms

  205370 requests in 5.00s, 205370 responses
  Throughput: 41.06K req/s
  Bandwidth:  103.37MB/s
  Status codes: 2xx=205370, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 205370 / 205370 responses (100.0%)
[info] CPU 2441.4% | Mem 5.0GiB

=== Best: 47975 req/s (CPU: 2785.2%, Mem: 5.0GiB) ===
[info] saved results/fortunes/1024/ring-http-exchange.json
httparena-bench-ring-http-exchange
httparena-bench-ring-http-exchange
[info] skip: ring-http-exchange does not subscribe to baseline-h2
[info] skip: ring-http-exchange does not subscribe to static-h2
[info] skip: ring-http-exchange does not subscribe to baseline-h2c
[info] skip: ring-http-exchange does not subscribe to json-h2c
[info] skip: ring-http-exchange does not subscribe to baseline-h3
[info] skip: ring-http-exchange does not subscribe to static-h3
[info] skip: ring-http-exchange does not subscribe to gateway-64
[info] skip: ring-http-exchange does not subscribe to gateway-h3
[info] skip: ring-http-exchange does not subscribe to production-stack
[info] skip: ring-http-exchange does not subscribe to unary-grpc
[info] skip: ring-http-exchange does not subscribe to unary-grpc-tls
[info] skip: ring-http-exchange does not subscribe to stream-grpc
[info] skip: ring-http-exchange does not subscribe to stream-grpc-tls
[info] skip: ring-http-exchange does not subscribe to echo-ws
[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/crud-4096.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-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/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
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536
[info] restoring CPU governor → powersave

@ruroru ruroru force-pushed the update-ring-http-exchange branch from d7ae17f to cbe3188 Compare May 11, 2026 22:13
@ruroru
Copy link
Copy Markdown
Contributor Author

ruroru commented May 11, 2026

/benchmark -f ring-http-exchange

@github-actions
Copy link
Copy Markdown
Contributor

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

@ruroru ruroru force-pushed the update-ring-http-exchange branch from cbe3188 to f146a75 Compare May 11, 2026 22:39
@github-actions
Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: ring-http-exchange | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 1,173,435 6348.6% 13.6GiB -11.0% +7.9%
baseline 4096 1,141,633 6270.7% 13.0GiB -7.8% ~0%
limited-conn 512 848,670 6125.9% 13.4GiB -3.3% ~0%
limited-conn 4096 850,281 5952.4% 13.4GiB -5.1% +4.7%
json 4096 433,922 5954.3% 12.9GiB -7.1% -7.9%
json-comp 512 18,805 650.0% 786MiB +0.1% -2.0%
json-comp 4096 139,955 4665.1% 14.4GiB -1.0% +121.5%
json-comp 16384 222,877 6634.9% 15.3GiB +0.8% +2.0%
json-tls 4096 438,306 6407.6% 13.9GiB -4.8% -2.8%
upload 32 2,670 2373.3% 393MiB -1.7% +12.3%
upload 256 2,880 4535.0% 418MiB -0.7% +6.6%
api-4 256 32,441 409.6% 850MiB +3.0% +18.1%
api-16 1024 75,920 1719.8% 2.5GiB -1.3% +66.7%
static 1024 220,568 6645.8% 2.2GiB -6.4% -54.2%
static 4096 218,009 6621.0% 4.9GiB -3.2% ~0%
static 6800 216,297 6485.5% 4.9GiB -4.1% ~0%
async-db 1024 108,304 5099.0% 5.0GiB +39.1% +6.4%
crud 4096 211,974 5206.1% 12.5GiB -34.5% -2.3%
fortunes 1024 51,754 3344.5% 5.1GiB NEW NEW
Full log
=== ring-http-exchange / crud / 4096c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   23.38ms   27.00ms   30.70ms   74.90ms   835.40ms

  2621658 requests in 15.00s, 2620762 responses
  Throughput: 174.68K req/s
  Bandwidth:  62.40MB/s
  Status codes: 2xx=2620762, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2620762 / 2620762 responses (100.0%)
  Reconnects: 11059
  Per-template: 94598,101701,122142,125195,145518,145827,145735,145826,146236,145164,145986,145058,145011,145594,145246,145175,135354,106982,93936,94478
  Per-template-ok: 94598,101701,122142,125195,145518,145827,145735,145826,146236,145164,145986,145058,145011,145594,145246,145175,135354,106982,93936,94478
[info] CPU 5181.1% | Mem 14.2GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   19.53ms   26.00ms   28.70ms   38.80ms   152.00ms

  3135037 requests in 15.00s, 3135037 responses
  Throughput: 208.96K req/s
  Bandwidth:  74.59MB/s
  Status codes: 2xx=3135037, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 3135037 / 3135037 responses (100.0%)
  Reconnects: 14072
  Per-template: 111345,122491,127645,151717,164000,176099,176039,175590,174737,175746,175654,175227,175931,174988,174829,175508,162716,139429,114245,111101
  Per-template-ok: 111345,122491,127645,151717,164000,176099,176039,175590,174737,175746,175654,175227,175931,174988,174829,175508,162716,139429,114245,111101
[info] CPU 5145.0% | Mem 13.9GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   19.29ms   25.90ms   28.40ms   38.40ms   94.50ms

  3179613 requests in 15.00s, 3179613 responses
  Throughput: 211.93K req/s
  Bandwidth:  75.78MB/s
  Status codes: 2xx=3179613, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 3179613 / 3179613 responses (100.0%)
  Reconnects: 14105
  Per-template: 112411,122600,130294,153550,163940,178337,177650,177622,177768,178042,178104,178272,178251,178545,178187,177679,166542,142154,117321,112344
  Per-template-ok: 112411,122600,130294,153550,163940,178337,177650,177622,177768,178042,178104,178272,178251,178545,178187,177679,166542,142154,117321,112344
[info] CPU 5206.1% | Mem 12.5GiB

=== Best: 211974 req/s (CPU: 5206.1%, Mem: 12.5GiB) ===
[info] input BW: 18.19MB/s (avg template: 90 bytes)
[info] saved results/crud/4096/ring-http-exchange.json
httparena-bench-ring-http-exchange
httparena-bench-ring-http-exchange

==============================================
=== ring-http-exchange / fortunes / 1024c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   26.36ms   16.30ms   51.00ms   117.90ms   745.20ms

  193607 requests in 5.00s, 193607 responses
  Throughput: 38.71K req/s
  Bandwidth:  97.84MB/s
  Status codes: 2xx=193607, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 193607 / 193607 responses (100.0%)
[info] CPU 3963.6% | Mem 5.2GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   19.47ms   13.50ms   49.90ms   64.10ms   78.00ms

  258773 requests in 5.00s, 258773 responses
  Throughput: 51.73K req/s
  Bandwidth:  130.27MB/s
  Status codes: 2xx=258773, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 258773 / 258773 responses (100.0%)
[info] CPU 3344.5% | Mem 5.1GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   19.65ms   13.90ms   49.90ms   64.60ms   78.00ms

  255866 requests in 5.00s, 255866 responses
  Throughput: 51.15K req/s
  Bandwidth:  128.83MB/s
  Status codes: 2xx=255866, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 255865 / 255866 responses (100.0%)
[info] CPU 3281.7% | Mem 5.0GiB

=== Best: 51754 req/s (CPU: 3344.5%, Mem: 5.1GiB) ===
[info] saved results/fortunes/1024/ring-http-exchange.json
httparena-bench-ring-http-exchange
httparena-bench-ring-http-exchange
[info] skip: ring-http-exchange does not subscribe to baseline-h2
[info] skip: ring-http-exchange does not subscribe to static-h2
[info] skip: ring-http-exchange does not subscribe to baseline-h2c
[info] skip: ring-http-exchange does not subscribe to json-h2c
[info] skip: ring-http-exchange does not subscribe to baseline-h3
[info] skip: ring-http-exchange does not subscribe to static-h3
[info] skip: ring-http-exchange does not subscribe to gateway-64
[info] skip: ring-http-exchange does not subscribe to gateway-h3
[info] skip: ring-http-exchange does not subscribe to production-stack
[info] skip: ring-http-exchange does not subscribe to unary-grpc
[info] skip: ring-http-exchange does not subscribe to unary-grpc-tls
[info] skip: ring-http-exchange does not subscribe to stream-grpc
[info] skip: ring-http-exchange does not subscribe to stream-grpc-tls
[info] skip: ring-http-exchange does not subscribe to echo-ws
[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/crud-4096.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-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/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
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536
[info] restoring CPU governor → powersave

@ruroru
Copy link
Copy Markdown
Contributor Author

ruroru commented May 12, 2026

/benchmark -f ring-http-exchange

@github-actions
Copy link
Copy Markdown
Contributor

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

@ruroru ruroru force-pushed the update-ring-http-exchange branch 2 times, most recently from 8a19bb5 to f68c83f Compare May 12, 2026 16:48
@github-actions
Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: ring-http-exchange | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 1,178,673 6304.0% 13.0GiB -10.6% +3.2%
baseline 4096 1,153,137 6277.6% 13.0GiB -6.8% ~0%
limited-conn 512 844,383 5941.4% 12.8GiB -3.8% -4.5%
limited-conn 4096 816,641 6050.6% 13.5GiB -8.8% +5.5%
json 4096 434,165 5478.7% 13.7GiB -7.1% -2.1%
json-comp 512 18,802 683.0% 819MiB ~0% +2.1%
json-comp 4096 139,964 4384.3% 14.5GiB -1.0% +123.1%
json-comp 16384 221,323 6338.9% 15.4GiB +0.1% +2.7%
json-tls 4096 437,447 6455.2% 14.0GiB -5.0% -2.1%
upload 32 2,679 2388.3% 381MiB -1.3% +8.9%
upload 256 2,875 4628.2% 378MiB -0.9% -3.6%
api-4 256 31,820 408.8% 865MiB +1.0% +20.1%
api-16 1024 75,479 1717.3% 2.4GiB -1.9% +60.0%
static 1024 223,008 6571.3% 4.8GiB -5.4% ~0%
static 4096 217,876 6375.0% 4.9GiB -3.3% ~0%
static 6800 227,736 6497.6% 4.9GiB +1.0% ~0%
async-db 1024 107,331 5088.2% 5.1GiB +37.8% +8.5%
crud 4096 211,511 5285.1% 12.5GiB -34.6% -2.3%
fortunes 1024 51,078 3316.0% 5.0GiB NEW NEW
Full log
=== ring-http-exchange / crud / 4096c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   22.89ms   26.60ms   30.90ms   76.40ms   717.60ms

  2677836 requests in 15.00s, 2677644 responses
  Throughput: 178.48K req/s
  Bandwidth:  63.77MB/s
  Status codes: 2xx=2677644, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2677644 / 2677644 responses (100.0%)
  Reconnects: 11190
  Per-template: 96129,104575,122929,127806,148511,149175,148487,148530,148575,149334,149407,148493,148616,148727,149152,149180,138420,109931,95512,96155
  Per-template-ok: 96129,104575,122929,127806,148511,149175,148487,148530,148575,149334,149407,148493,148616,148727,149152,149180,138420,109931,95512,96155
[info] CPU 5140.2% | Mem 14.2GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   19.68ms   26.00ms   28.70ms   39.20ms   243.50ms

  3120525 requests in 15.00s, 3120525 responses
  Throughput: 208.00K req/s
  Bandwidth:  74.23MB/s
  Status codes: 2xx=3120525, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 3120525 / 3120525 responses (100.0%)
  Reconnects: 14087
  Per-template: 110746,122763,127174,150957,163794,174963,174795,174765,174001,175147,174788,174461,173781,174413,174275,174620,161862,139644,112928,110648
  Per-template-ok: 110746,122763,127174,150957,163794,174963,174795,174765,174001,175147,174788,174461,173781,174413,174275,174620,161862,139644,112928,110648
[info] CPU 5155.4% | Mem 13.9GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   19.29ms   25.90ms   28.20ms   38.80ms   112.60ms

  3172676 requests in 15.00s, 3172676 responses
  Throughput: 211.47K req/s
  Bandwidth:  75.56MB/s
  Status codes: 2xx=3172676, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 3172676 / 3172676 responses (100.0%)
  Reconnects: 14077
  Per-template: 112462,122599,129739,153488,163873,178002,177603,177537,178228,177873,177409,177850,177797,177974,177367,177659,165487,140390,116889,112450
  Per-template-ok: 112462,122599,129739,153488,163873,178002,177603,177537,178228,177873,177409,177850,177797,177974,177367,177659,165487,140390,116889,112450
[info] CPU 5285.1% | Mem 12.5GiB

=== Best: 211511 req/s (CPU: 5285.1%, Mem: 12.5GiB) ===
[info] input BW: 18.15MB/s (avg template: 90 bytes)
[info] saved results/crud/4096/ring-http-exchange.json
httparena-bench-ring-http-exchange
httparena-bench-ring-http-exchange

==============================================
=== ring-http-exchange / fortunes / 1024c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   27.69ms   16.40ms   51.00ms   160.90ms   831.10ms

  184846 requests in 5.00s, 184846 responses
  Throughput: 36.95K req/s
  Bandwidth:  93.40MB/s
  Status codes: 2xx=184846, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 184846 / 184846 responses (100.0%)
[info] CPU 3959.7% | Mem 5.1GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   19.83ms   14.00ms   50.00ms   64.90ms   77.20ms

  253182 requests in 5.00s, 253182 responses
  Throughput: 50.62K req/s
  Bandwidth:  127.48MB/s
  Status codes: 2xx=253182, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 253182 / 253182 responses (100.0%)
[info] CPU 3337.9% | Mem 5.1GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   19.63ms   13.80ms   49.90ms   64.90ms   79.00ms

  255394 requests in 5.00s, 255394 responses
  Throughput: 51.06K req/s
  Bandwidth:  128.58MB/s
  Status codes: 2xx=255394, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 255394 / 255394 responses (100.0%)
[info] CPU 3316.0% | Mem 5.0GiB

=== Best: 51078 req/s (CPU: 3316.0%, Mem: 5.0GiB) ===
[info] saved results/fortunes/1024/ring-http-exchange.json
httparena-bench-ring-http-exchange
httparena-bench-ring-http-exchange
[info] skip: ring-http-exchange does not subscribe to baseline-h2
[info] skip: ring-http-exchange does not subscribe to static-h2
[info] skip: ring-http-exchange does not subscribe to baseline-h2c
[info] skip: ring-http-exchange does not subscribe to json-h2c
[info] skip: ring-http-exchange does not subscribe to baseline-h3
[info] skip: ring-http-exchange does not subscribe to static-h3
[info] skip: ring-http-exchange does not subscribe to gateway-64
[info] skip: ring-http-exchange does not subscribe to gateway-h3
[info] skip: ring-http-exchange does not subscribe to production-stack
[info] skip: ring-http-exchange does not subscribe to unary-grpc
[info] skip: ring-http-exchange does not subscribe to unary-grpc-tls
[info] skip: ring-http-exchange does not subscribe to stream-grpc
[info] skip: ring-http-exchange does not subscribe to stream-grpc-tls
[info] skip: ring-http-exchange does not subscribe to echo-ws
[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/crud-4096.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-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/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
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536
[info] restoring CPU governor → powersave

@ruroru
Copy link
Copy Markdown
Contributor Author

ruroru commented May 12, 2026

/benchmark -f ring-http-exchange

@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: ring-http-exchange | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 1,154,957 6199.8% 13.5GiB -12.4% +7.1%
baseline 4096 1,152,755 6320.4% 13.0GiB -6.9% ~0%
limited-conn 512 844,360 6216.5% 12.7GiB -3.8% -5.2%
limited-conn 4096 834,521 5866.9% 12.8GiB -6.8% ~0%
json 4096 434,893 5511.8% 13.7GiB -6.9% -2.1%
json-comp 512 18,814 681.8% 822MiB +0.2% +2.5%
json-comp 4096 140,180 4223.2% 10.7GiB -0.8% +64.6%
json-comp 16384 226,558 6635.1% 15.2GiB +2.5% +1.3%
json-tls 4096 438,850 6409.0% 13.9GiB -4.7% -2.8%
upload 32 2,706 2488.0% 444MiB -0.3% +26.9%
upload 256 2,898 4569.7% 381MiB ~0% -2.8%
api-4 256 32,379 407.7% 853MiB +2.8% +18.5%
api-16 1024 75,246 1720.0% 3.1GiB -2.2% +106.7%
static 1024 224,005 6656.3% 2.3GiB -5.0% -52.1%
static 4096 221,258 6669.9% 4.9GiB -1.8% ~0%
static 6800 229,731 6533.8% 4.9GiB +1.9% ~0%
async-db 1024 108,883 5123.4% 5.5GiB +39.8% +17.0%
crud 4096 206,648 5344.7% 13.0GiB -36.1% +1.6%
fortunes 1024 45,954 3015.6% 5.1GiB NEW NEW
Full log
=== ring-http-exchange / crud / 4096c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   23.50ms   27.40ms   31.60ms   73.10ms   701.40ms

  2610442 requests in 15.00s, 2609098 responses
  Throughput: 173.90K req/s
  Bandwidth:  62.11MB/s
  Status codes: 2xx=2609098, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2609098 / 2609098 responses (100.0%)
  Reconnects: 11059
  Per-template: 94729,101825,122454,125137,144367,144251,144354,144927,144525,144465,144846,144701,144660,144198,144838,145048,134763,106511,93903,94596
  Per-template-ok: 94729,101825,122454,125137,144367,144251,144354,144927,144525,144465,144846,144701,144660,144198,144838,145048,134763,106511,93903,94596
[info] CPU 5110.9% | Mem 14.3GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   20.68ms   27.00ms   29.70ms   39.30ms   347.20ms

  2966428 requests in 15.00s, 2966428 responses
  Throughput: 197.72K req/s
  Bandwidth:  70.29MB/s
  Status codes: 2xx=2966428, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2966428 / 2966428 responses (100.0%)
  Reconnects: 12870
  Per-template: 105915,119168,122848,142963,162746,164783,165230,165886,165680,165003,165418,165439,164919,164803,165314,165291,150881,132820,105523,105798
  Per-template-ok: 105915,119168,122848,142963,162746,164783,165230,165886,165680,165003,165418,165439,164919,164803,165314,165291,150881,132820,105523,105798
[info] CPU 5203.1% | Mem 13.9GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   19.75ms   26.40ms   28.90ms   38.10ms   100.00ms

  3099721 requests in 15.00s, 3099721 responses
  Throughput: 206.61K req/s
  Bandwidth:  73.62MB/s
  Status codes: 2xx=3099721, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 3099721 / 3099721 responses (100.0%)
  Reconnects: 14041
  Per-template: 110652,122743,126451,149105,163412,173371,173603,173731,173750,173279,173633,172870,172659,172686,173656,172801,159646,138761,112566,110346
  Per-template-ok: 110652,122743,126451,149105,163412,173371,173603,173731,173750,173279,173633,172870,172659,172686,173656,172801,159646,138761,112566,110346
[info] CPU 5344.7% | Mem 13.0GiB

=== Best: 206648 req/s (CPU: 5344.7%, Mem: 13.0GiB) ===
[info] input BW: 17.74MB/s (avg template: 90 bytes)
[info] saved results/crud/4096/ring-http-exchange.json
httparena-bench-ring-http-exchange
httparena-bench-ring-http-exchange

==============================================
=== ring-http-exchange / fortunes / 1024c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   30.35ms   19.00ms   53.80ms   154.10ms   828.30ms

  167922 requests in 5.00s, 167922 responses
  Throughput: 33.57K req/s
  Bandwidth:  84.89MB/s
  Status codes: 2xx=167922, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 167922 / 167922 responses (100.0%)
[info] CPU 3794.3% | Mem 5.1GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   21.89ms   16.10ms   51.90ms   67.10ms   82.90ms

  229774 requests in 5.00s, 229774 responses
  Throughput: 45.94K req/s
  Bandwidth:  115.75MB/s
  Status codes: 2xx=229774, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 229774 / 229774 responses (100.0%)
[info] CPU 3015.6% | Mem 5.1GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   22.07ms   16.40ms   51.90ms   67.40ms   82.00ms

  228966 requests in 5.00s, 228966 responses
  Throughput: 45.78K req/s
  Bandwidth:  115.24MB/s
  Status codes: 2xx=228966, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 228966 / 228966 responses (100.0%)
[info] CPU 2980.8% | Mem 5.0GiB

=== Best: 45954 req/s (CPU: 3015.6%, Mem: 5.1GiB) ===
[info] saved results/fortunes/1024/ring-http-exchange.json
httparena-bench-ring-http-exchange
httparena-bench-ring-http-exchange
[info] skip: ring-http-exchange does not subscribe to baseline-h2
[info] skip: ring-http-exchange does not subscribe to static-h2
[info] skip: ring-http-exchange does not subscribe to baseline-h2c
[info] skip: ring-http-exchange does not subscribe to json-h2c
[info] skip: ring-http-exchange does not subscribe to baseline-h3
[info] skip: ring-http-exchange does not subscribe to static-h3
[info] skip: ring-http-exchange does not subscribe to gateway-64
[info] skip: ring-http-exchange does not subscribe to gateway-h3
[info] skip: ring-http-exchange does not subscribe to production-stack
[info] skip: ring-http-exchange does not subscribe to unary-grpc
[info] skip: ring-http-exchange does not subscribe to unary-grpc-tls
[info] skip: ring-http-exchange does not subscribe to stream-grpc
[info] skip: ring-http-exchange does not subscribe to stream-grpc-tls
[info] skip: ring-http-exchange does not subscribe to echo-ws
[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/crud-4096.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-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/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
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536
[info] restoring CPU governor → powersave

@ruroru ruroru force-pushed the update-ring-http-exchange branch from f68c83f to f146a75 Compare May 12, 2026 18:26
@ruroru
Copy link
Copy Markdown
Contributor Author

ruroru commented May 12, 2026

/benchmark -f ring-http-exchange

@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: ring-http-exchange | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 1,177,006 6239.1% 13.5GiB -10.8% +7.1%
baseline 4096 1,150,413 6424.7% 13.7GiB -7.1% +5.4%
limited-conn 512 845,841 6145.7% 12.8GiB -3.6% -4.5%
limited-conn 4096 823,162 5966.0% 13.4GiB -8.1% +4.7%
json 4096 432,124 5913.2% 12.9GiB -7.5% -7.9%
json-comp 512 18,817 605.0% 775MiB +0.2% -3.4%
json-comp 4096 140,055 4716.9% 14.3GiB -0.9% +120.0%
json-comp 16384 225,397 6581.1% 14.9GiB +2.0% -0.7%
json-tls 4096 430,091 6456.8% 13.9GiB -6.6% -2.8%
upload 32 2,712 2398.0% 393MiB -0.1% +12.3%
upload 256 2,871 4657.9% 375MiB -1.0% -4.3%
api-4 256 32,040 407.9% 870MiB +1.7% +20.8%
api-16 1024 76,506 1723.9% 3.3GiB -0.6% +120.0%
static 1024 230,691 6617.4% 2.3GiB -2.1% -52.1%
static 4096 219,728 6597.0% 4.8GiB -2.5% -2.0%
static 6800 218,785 6404.6% 4.9GiB -3.0% ~0%
async-db 1024 109,919 5225.1% 6.8GiB +41.2% +44.7%
crud 4096 206,091 5154.3% 12.6GiB -36.3% -1.6%
fortunes 1024 56,132 3542.7% 5.0GiB NEW NEW
Full log
=== ring-http-exchange / crud / 4096c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   22.98ms   26.70ms   30.70ms   87.10ms   697.60ms

  2667399 requests in 15.00s, 2666247 responses
  Throughput: 177.72K req/s
  Bandwidth:  63.45MB/s
  Status codes: 2xx=2666247, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2666247 / 2666247 responses (100.0%)
  Reconnects: 11181
  Per-template: 95855,103720,122753,127663,148102,148445,148142,148915,148560,147852,148621,148207,148048,148357,148203,148189,137223,108578,95035,95779
  Per-template-ok: 95855,103720,122753,127663,148102,148445,148142,148915,148560,147852,148621,148207,148048,148357,148203,148189,137223,108578,95035,95779
[info] CPU 5141.3% | Mem 14.2GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   19.91ms   26.40ms   29.00ms   39.40ms   169.20ms

  3075991 requests in 15.00s, 3075991 responses
  Throughput: 205.03K req/s
  Bandwidth:  73.00MB/s
  Status codes: 2xx=3075991, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 3075991 / 3075991 responses (100.0%)
  Reconnects: 13985
  Per-template: 109513,122252,125045,147956,163654,172263,171676,172044,172135,171838,171665,172462,172601,171846,172044,172133,157707,137126,110388,109643
  Per-template-ok: 109513,122252,125045,147956,163654,172263,171676,172044,172135,171838,171665,172462,172601,171846,172044,172133,157707,137126,110388,109643
[info] CPU 5137.6% | Mem 13.9GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   19.82ms   26.60ms   29.00ms   38.90ms   55.90ms

  3091371 requests in 15.00s, 3091371 responses
  Throughput: 206.05K req/s
  Bandwidth:  73.47MB/s
  Status codes: 2xx=3091371, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 3091368 / 3091371 responses (100.0%)
  Reconnects: 14027
  Per-template: 110337,122573,126301,148770,163283,172493,172601,172851,172614,172565,173141,172349,173107,172956,172417,172159,159785,138591,112154,110321
  Per-template-ok: 110337,122573,126301,148770,163283,172493,172601,172851,172614,172565,173141,172349,173107,172956,172417,172159,159785,138591,112154,110321
[info] CPU 5154.3% | Mem 12.6GiB

=== Best: 206091 req/s (CPU: 5154.3%, Mem: 12.6GiB) ===
[info] input BW: 17.69MB/s (avg template: 90 bytes)
[info] saved results/crud/4096/ring-http-exchange.json
httparena-bench-ring-http-exchange
httparena-bench-ring-http-exchange

==============================================
=== ring-http-exchange / fortunes / 1024c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   24.26ms   14.10ms   49.40ms   120.30ms   748.40ms

  209511 requests in 5.00s, 209511 responses
  Throughput: 41.88K req/s
  Bandwidth:  105.91MB/s
  Status codes: 2xx=209511, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 209511 / 209511 responses (100.0%)
[info] CPU 4161.5% | Mem 5.1GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   17.87ms   12.20ms   48.00ms   62.90ms   75.90ms

  278280 requests in 5.00s, 278280 responses
  Throughput: 55.63K req/s
  Bandwidth:  140.14MB/s
  Status codes: 2xx=278280, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 278279 / 278280 responses (100.0%)
[info] CPU 3579.6% | Mem 5.1GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   17.86ms   12.20ms   48.00ms   62.30ms   75.30ms

  280662 requests in 5.00s, 280662 responses
  Throughput: 56.11K req/s
  Bandwidth:  141.29MB/s
  Status codes: 2xx=280662, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 280662 / 280662 responses (100.0%)
[info] CPU 3542.7% | Mem 5.0GiB

=== Best: 56132 req/s (CPU: 3542.7%, Mem: 5.0GiB) ===
[info] saved results/fortunes/1024/ring-http-exchange.json
httparena-bench-ring-http-exchange
httparena-bench-ring-http-exchange
[info] skip: ring-http-exchange does not subscribe to baseline-h2
[info] skip: ring-http-exchange does not subscribe to static-h2
[info] skip: ring-http-exchange does not subscribe to baseline-h2c
[info] skip: ring-http-exchange does not subscribe to json-h2c
[info] skip: ring-http-exchange does not subscribe to baseline-h3
[info] skip: ring-http-exchange does not subscribe to static-h3
[info] skip: ring-http-exchange does not subscribe to gateway-64
[info] skip: ring-http-exchange does not subscribe to gateway-h3
[info] skip: ring-http-exchange does not subscribe to production-stack
[info] skip: ring-http-exchange does not subscribe to unary-grpc
[info] skip: ring-http-exchange does not subscribe to unary-grpc-tls
[info] skip: ring-http-exchange does not subscribe to stream-grpc
[info] skip: ring-http-exchange does not subscribe to stream-grpc-tls
[info] skip: ring-http-exchange does not subscribe to echo-ws
[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/crud-4096.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-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/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
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536
[info] restoring CPU governor → powersave

@ruroru ruroru force-pushed the update-ring-http-exchange branch from f146a75 to eba2386 Compare May 12, 2026 21:02
@ruroru
Copy link
Copy Markdown
Contributor Author

ruroru commented May 13, 2026

/benchmark -f ring-http-exchange

@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: ring-http-exchange | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 1,188,743 6355.8% 13.5GiB -9.9% +7.1%
baseline 4096 1,139,833 6267.2% 13.0GiB -7.9% ~0%
limited-conn 512 822,323 5986.4% 12.7GiB -6.3% -5.2%
limited-conn 4096 823,218 5709.4% 12.8GiB -8.1% ~0%
json 4096 432,825 5964.4% 13.0GiB -7.3% -7.1%
json-comp 512 18,866 686.1% 792MiB +0.4% -1.2%
json-comp 4096 139,450 4715.0% 14.4GiB -1.4% +121.5%
json-comp 16384 222,994 6576.1% 15.7GiB +0.9% +4.7%
json-tls 4096 429,142 6405.0% 14.0GiB -6.8% -2.1%
upload 32 2,699 2461.8% 373MiB -0.6% +6.6%
upload 256 2,918 4688.2% 378MiB +0.6% -3.6%
api-4 256 32,061 408.6% 881MiB +1.8% +22.4%
api-16 1024 75,016 1712.7% 1.9GiB -2.5% +26.7%
static 1024 221,208 6637.7% 2.2GiB -6.1% -54.2%
static 4096 217,061 6357.9% 4.8GiB -3.7% -2.0%
static 6800 224,674 6646.4% 5.0GiB -0.4% +2.0%
async-db 1024 107,813 5110.7% 5.1GiB +38.5% +8.5%
crud 4096 202,619 5159.6% 12.6GiB -37.4% -1.6%
fortunes 1024 51,801 3430.1% 5.2GiB NEW NEW
Full log
=== ring-http-exchange / crud / 4096c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   23.02ms   26.70ms   30.40ms   89.20ms   771.10ms

  2663184 requests in 15.00s, 2662032 responses
  Throughput: 177.43K req/s
  Bandwidth:  63.41MB/s
  Status codes: 2xx=2662032, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2662032 / 2662032 responses (100.0%)
  Reconnects: 11164
  Per-template: 95938,103874,122829,127421,148020,147839,147391,147947,147744,147909,147572,147832,147713,148068,148419,148288,137776,109164,94686,95602
  Per-template-ok: 95938,103874,122829,127421,148020,147839,147391,147947,147744,147909,147572,147832,147713,148068,148419,148288,137776,109164,94686,95602
[info] CPU 5193.6% | Mem 14.2GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   20.18ms   26.90ms   29.30ms   39.40ms   90.10ms

  3034639 requests in 15.00s, 3034640 responses
  Throughput: 202.27K req/s
  Bandwidth:  71.91MB/s
  Status codes: 2xx=3034640, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 3034640 / 3034640 responses (100.0%)
  Reconnects: 13719
  Per-template: 108567,122242,124180,146520,163329,169293,169976,169251,169492,169017,169620,169933,169186,169327,169275,169025,154363,135336,108360,108348
  Per-template-ok: 108567,122242,124180,146520,163329,169293,169976,169251,169492,169017,169620,169933,169186,169327,169275,169025,154363,135336,108360,108348
[info] CPU 5026.1% | Mem 13.9GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   20.15ms   26.90ms   29.40ms   39.10ms   89.90ms

  3039285 requests in 15.00s, 3039286 responses
  Throughput: 202.58K req/s
  Bandwidth:  72.03MB/s
  Status codes: 2xx=3039286, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 3039286 / 3039286 responses (100.0%)
  Reconnects: 13769
  Per-template: 108721,122221,123957,145972,163458,170458,169716,169857,169999,170142,169362,169198,169669,169658,169564,169032,154807,135916,108959,108620
  Per-template-ok: 108721,122221,123957,145972,163458,170458,169716,169857,169999,170142,169362,169198,169669,169658,169564,169032,154807,135916,108959,108620
[info] CPU 5159.6% | Mem 12.6GiB

=== Best: 202619 req/s (CPU: 5159.6%, Mem: 12.6GiB) ===
[info] input BW: 17.39MB/s (avg template: 90 bytes)
[info] saved results/crud/4096/ring-http-exchange.json
httparena-bench-ring-http-exchange
httparena-bench-ring-http-exchange

==============================================
=== ring-http-exchange / fortunes / 1024c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   27.01ms   16.40ms   50.60ms   122.30ms   852.00ms

  189649 requests in 5.00s, 189649 responses
  Throughput: 37.91K req/s
  Bandwidth:  95.83MB/s
  Status codes: 2xx=189649, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 189649 / 189649 responses (100.0%)
[info] CPU 4003.3% | Mem 5.2GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   19.40ms   13.70ms   49.50ms   64.90ms   78.00ms

  259005 requests in 5.00s, 259005 responses
  Throughput: 51.78K req/s
  Bandwidth:  130.40MB/s
  Status codes: 2xx=259005, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 259004 / 259005 responses (100.0%)
[info] CPU 3430.1% | Mem 5.2GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   19.58ms   13.90ms   49.30ms   64.70ms   78.80ms

  255946 requests in 5.00s, 255946 responses
  Throughput: 51.17K req/s
  Bandwidth:  128.93MB/s
  Status codes: 2xx=255946, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 255946 / 255946 responses (100.0%)
[info] CPU 3280.5% | Mem 5.0GiB

=== Best: 51801 req/s (CPU: 3430.1%, Mem: 5.2GiB) ===
[info] saved results/fortunes/1024/ring-http-exchange.json
httparena-bench-ring-http-exchange
httparena-bench-ring-http-exchange
[info] skip: ring-http-exchange does not subscribe to baseline-h2
[info] skip: ring-http-exchange does not subscribe to static-h2
[info] skip: ring-http-exchange does not subscribe to baseline-h2c
[info] skip: ring-http-exchange does not subscribe to json-h2c
[info] skip: ring-http-exchange does not subscribe to baseline-h3
[info] skip: ring-http-exchange does not subscribe to static-h3
[info] skip: ring-http-exchange does not subscribe to gateway-64
[info] skip: ring-http-exchange does not subscribe to gateway-h3
[info] skip: ring-http-exchange does not subscribe to production-stack
[info] skip: ring-http-exchange does not subscribe to unary-grpc
[info] skip: ring-http-exchange does not subscribe to unary-grpc-tls
[info] skip: ring-http-exchange does not subscribe to stream-grpc
[info] skip: ring-http-exchange does not subscribe to stream-grpc-tls
[info] skip: ring-http-exchange does not subscribe to echo-ws
[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/crud-4096.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-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/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
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536
[info] restoring CPU governor → powersave

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.

1 participant