Skip to content

[rust + python] Add mq-bridge and mq-bridge-py#870

Draft
marcomq wants to merge 6 commits into
MDA2AV:mainfrom
marcomq:main
Draft

[rust + python] Add mq-bridge and mq-bridge-py#870
marcomq wants to merge 6 commits into
MDA2AV:mainfrom
marcomq:main

Conversation

@marcomq

@marcomq marcomq commented Jun 14, 2026

Copy link
Copy Markdown

Description

Adding mq-bridge to benchmark:

  • mq-bridge - http, rust
  • mq-bridge-h2c - http2, rust
  • mq-bridge-websocket - websocket, rust
  • mq-bridge-py - python

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

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

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


Run benchmarks locally

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

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

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

@marcomq marcomq marked this pull request as draft June 14, 2026 11:09
@marcomq marcomq changed the title add mq-bridge [rust + python] Add mq-bridge and mq-bridge-py Jun 14, 2026
@marcomq

marcomq commented Jun 14, 2026

Copy link
Copy Markdown
Author

/benchmark -f mq-bridge

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

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 1,070,267 4472.5% 81MiB NEW NEW
baseline 4096 1,178,334 4953.1% 173MiB NEW NEW
pipelined 512 1,520,073 6189.4% 37MiB NEW NEW
pipelined 4096 1,467,062 6079.2% 153MiB NEW NEW
limited-conn 512 709,497 4525.8% 81MiB NEW NEW
limited-conn 4096 714,584 5280.1% 245MiB NEW NEW
json 4096 904,112 6121.0% 255MiB NEW NEW
json-comp 512 66,259 5839.5% 74MiB NEW NEW
json-comp 4096 324,474 5862.7% 234MiB NEW NEW
json-comp 16384 352,244 5913.0% 738MiB NEW NEW
upload 32 1,403 2826.7% 1.6GiB NEW NEW
upload 256 1,484 5243.1% 5.0GiB NEW NEW
api-4 256 39,387 389.6% 42MiB NEW NEW
api-16 1024 87,138 1457.3% 102MiB NEW NEW
static 1024 87,631 6323.0% 415MiB NEW NEW
static 4096 86,770 6314.4% 1.0GiB NEW NEW
static 6800 83,560 6218.8% 1.7GiB NEW NEW
async-db 1024 107,620 4395.8% 128MiB NEW NEW
baseline-h2 256 501,576 4286.5% 260MiB NEW NEW
baseline-h2 1024 457,011 4224.1% 798MiB NEW NEW
static-h2 256 75,972 5777.7% 508MiB NEW NEW
static-h2 1024 72,675 5880.8% 2.3GiB NEW NEW
Full log

25% of clients started
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2
48.


finished in 5.03s, 76413.00 req/s, 1.84GB/s
requests: 382065 total, 390257 started, 382065 done, 382065 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 382142 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 9.22GB (9901658301) total, 14.12MB (14806403) headers (space savings 76.48%), 9.20GB (9876005760) data
                     min         max         mean         sd        +/- sd
time for request:      258us    555.65ms    104.81ms     72.06ms    70.40%
time for connect:     2.45ms     94.82ms     21.58ms     17.07ms    88.28%
time to 1st byte:     5.72ms    248.11ms     63.61ms     44.38ms    75.39%
req/s           :     193.77      470.18      298.45       50.74    73.05%
[info] CPU 5777.7% | Mem 508MiB

=== Best: 75972 req/s (CPU: 5777.7%, Mem: 508MiB) ===
[info] saved results/static-h2/256/mq-bridge.json
httparena-bench-mq-bridge
httparena-bench-mq-bridge

==============================================
=== mq-bridge / static-h2 / 1024c (tool=h2load) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
starting benchmark...
7Main benchmark duration is started for thread #58.
.
.Main benchmark duration is started for thread #41.
.
progress: Main benchmark duration is started for thread #37.
50% of clients started

progress: Warm-up phase is over for thread #.75
16Warm-up phase is over for thread #.Warm-up phase is over for thread #Main benchmark duration is started for thread #3.
60.
.

22.
.
12.

progress: Warm-up phase is over for thread #20.
87% of clients started

5.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2
. Stopping all clients.
. Stopping all clients.Stopped all clients for thread #63

34
55
4. Stopping all clients.
59Stopped all clients for thread #
27

finished in 5.06s, 64038.20 req/s, 1.55GB/s
requests: 320191 total, 352959 started, 320191 done, 320191 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 320258 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 7.75GB (8321877399) total, 11.92MB (12496913) headers (space savings 76.31%), 7.73GB (8300234877) data
                     min         max         mean         sd        +/- sd
time for request:      308us       1.29s    460.24ms    164.50ms    73.44%
time for connect:     3.30ms    710.90ms    267.39ms    182.27ms    60.45%
time to 1st byte:    24.35ms       1.38s    514.87ms    323.08ms    59.28%
req/s           :      44.59       93.77       62.52        7.34    68.95%
[info] CPU 4941.6% | Mem 2.2GiB

[run 2/3]
starting benchmark...
26.
.Warm-up phase is over for thread #Warm-up phase is over for thread #17.47
.
.Warm-up phase is over for thread #

.52Main benchmark duration is started for thread #61.
.

TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2
43Stopped all clients for thread #0
. Stopping all clients.
24
22


finished in 5.05s, 73236.60 req/s, 1.77GB/s
requests: 366183 total, 398951 started, 366183 done, 366183 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 366276 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 8.85GB (9505936519) total, 13.63MB (14288881) headers (space savings 76.32%), 8.83GB (9481201808) data
                     min         max         mean         sd        +/- sd
time for request:      341us       1.28s    418.58ms    135.84ms    73.12%
time for connect:     3.86ms    261.61ms     78.81ms     51.51ms    66.99%
time to 1st byte:    17.23ms    806.85ms    251.56ms    157.85ms    61.04%
req/s           :      52.40       95.59       71.50        6.10    70.51%
[info] CPU 5929.7% | Mem 2.2GiB

[run 3/3]
starting benchmark...
% of clients startedMain benchmark duration is started for thread #8.

.
progress: Main benchmark duration is started for thread #375Warm-up phase is over for thread #% of clients started
36.
progress: 81Warm-up phase is over for thread #% of clients started41
.

37.
% of clients startedMain benchmark duration is started for thread #20.

24.Main benchmark duration is started for thread #
61.Warm-up phase is over for thread #.53
.Warm-up phase is over for thread #Main benchmark duration is started for thread #50.24
.


0.

.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2
14.
63. Stopping all clients.
26

0Stopped all clients for thread #50

34Stopped all clients for thread #57. Stopping all clients.Stopped all clients for thread #

7

finished in 5.07s, 73663.20 req/s, 1.78GB/s
requests: 368316 total, 401084 started, 368316 done, 368316 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 368464 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 8.91GB (9565130948) total, 13.72MB (14387741) headers (space savings 76.30%), 8.89GB (9540234431) data
                     min         max         mean         sd        +/- sd
time for request:      240us       1.11s    417.73ms    133.51ms    72.28%
time for connect:     3.09ms    243.70ms     75.64ms     56.94ms    68.75%
time to 1st byte:     7.26ms    762.64ms    245.69ms    162.70ms    62.01%
req/s           :      55.18       95.19       71.92        5.97    69.73%
[info] CPU 5880.8% | Mem 2.3GiB

=== Best: 72675 req/s (CPU: 5880.8%, Mem: 2.3GiB) ===
[info] saved results/static-h2/1024/mq-bridge.json
httparena-bench-mq-bridge
httparena-bench-mq-bridge
[info] skip: mq-bridge does not subscribe to baseline-h2c
[info] skip: mq-bridge does not subscribe to json-h2c
[info] skip: mq-bridge does not subscribe to baseline-h3
[info] skip: mq-bridge does not subscribe to static-h3
[info] skip: mq-bridge does not subscribe to gateway-64
[info] skip: mq-bridge does not subscribe to gateway-h3
[info] skip: mq-bridge does not subscribe to production-stack
[info] skip: mq-bridge does not subscribe to unary-grpc
[info] skip: mq-bridge does not subscribe to unary-grpc-tls
[info] skip: mq-bridge does not subscribe to stream-grpc
[info] skip: mq-bridge does not subscribe to stream-grpc-tls
[info] skip: mq-bridge does not subscribe to echo-ws
[info] skip: mq-bridge does not subscribe to echo-ws-pipeline
[info] rebuilding site/data/*.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/api-16-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/api-4-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/async-db-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/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/limited-conn-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/limited-conn-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-6800.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-h2-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-h2-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/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
[info] restoring loopback MTU to 65536

@marcomq

marcomq commented Jun 14, 2026

Copy link
Copy Markdown
Author

/benchmark -f mq-bridge-py

@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: mq-bridge-py | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 840,444 6650.7% 1.0GiB NEW NEW
baseline 4096 1,196,701 6602.9% 1.6GiB NEW NEW
pipelined 512 1,562,017 6435.9% 1011MiB NEW NEW
pipelined 4096 2,660,039 6506.9% 1.3GiB NEW NEW
limited-conn 512 683,243 6606.6% 1.4GiB NEW NEW
limited-conn 4096 953,383 6534.9% 3.1GiB NEW NEW
json 4096 332,830 6579.0% 1.7GiB NEW NEW
json-comp 512 60,225 6443.9% 1.5GiB NEW NEW
json-comp 4096 101,786 6478.2% 2.9GiB NEW NEW
json-comp 16384 142,725 6296.7% 5.0GiB NEW NEW
upload 32 1,118 3395.6% 19.7GiB NEW NEW
upload 256 1,109 6301.6% 31.6GiB NEW NEW
api-4 256 11,905 401.8% 2.7GiB NEW NEW
api-16 1024 36,110 1723.7% 3.0GiB NEW NEW
static 1024 82,010 6481.7% 2.5GiB NEW NEW
static 4096 84,287 6469.8% 4.9GiB NEW NEW
static 6800 84,372 6495.6% 5.0GiB NEW NEW
async-db 1024 77,420 5427.1% 3.3GiB NEW NEW
Full log
[info] CPU 6487.5% | Mem 3.7GiB

[run 2/3]
Running 5s test @ http://localhost:8080
  64 threads and 4096 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    48.49ms   20.70ms 206.08ms   69.48%
    Req/Sec     1.33k   281.77    12.46k    98.16%
  429588 requests in 5.10s, 10.41GB read
Requests/sec:  84228.45
Transfer/sec:      2.04GB
[info] CPU 6501.3% | Mem 4.3GiB

[run 3/3]
Running 5s test @ http://localhost:8080
  64 threads and 4096 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    48.42ms   20.49ms 193.16ms   69.50%
    Req/Sec     1.33k   261.35     8.19k    97.79%
  429978 requests in 5.10s, 10.41GB read
Requests/sec:  84287.30
Transfer/sec:      2.04GB
[info] CPU 6469.8% | Mem 4.9GiB

=== Best: 84287 req/s (CPU: 6469.8%, Mem: 4.9GiB) ===
[info] saved results/static/4096/mq-bridge-py.json
httparena-bench-mq-bridge-py
httparena-bench-mq-bridge-py

==============================================
=== mq-bridge-py / static / 6800c (tool=wrk) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
Running 5s test @ http://localhost:8080
  64 threads and 6800 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    79.99ms   32.22ms 355.93ms   69.15%
    Req/Sec     1.32k   189.56     6.01k    98.03%
  428924 requests in 5.10s, 10.39GB read
Requests/sec:  84081.46
Transfer/sec:      2.04GB
[info] CPU 6461.4% | Mem 4.3GiB

[run 2/3]
Running 5s test @ http://localhost:8080
  64 threads and 6800 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    79.68ms   31.21ms 366.83ms   69.02%
    Req/Sec     1.33k   268.31    12.18k    98.49%
  430381 requests in 5.10s, 10.42GB read
Requests/sec:  84372.63
Transfer/sec:      2.04GB
[info] CPU 6495.6% | Mem 5.0GiB

[run 3/3]
Running 5s test @ http://localhost:8080
  64 threads and 6800 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    79.84ms   32.36ms 334.27ms   69.30%
    Req/Sec     1.33k   205.53     6.15k    98.00%
  429934 requests in 5.10s, 10.42GB read
Requests/sec:  84295.31
Transfer/sec:      2.04GB
[info] CPU 6459.0% | Mem 5.8GiB

=== Best: 84372 req/s (CPU: 6495.6%, Mem: 5.0GiB) ===
[info] saved results/static/6800/mq-bridge-py.json
httparena-bench-mq-bridge-py
httparena-bench-mq-bridge-py

==============================================
=== mq-bridge-py / async-db / 1024c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/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   12.86ms   8.75ms   29.40ms   60.30ms   90.50ms

  767090 requests in 10.00s, 767091 responses
  Throughput: 76.69K req/s
  Bandwidth:  297.95MB/s
  Status codes: 2xx=767091, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 767089 / 767091 responses (100.0%)
  Reconnects: 30417
  Per-template: 152910,153435,153873,153780,153091
  Per-template-ok: 152910,153435,153873,153780,153091
[info] CPU 5359.2% | Mem 3.2GiB

[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   12.71ms   8.99ms   28.40ms   55.00ms   80.90ms

  774200 requests in 10.00s, 774200 responses
  Throughput: 77.40K req/s
  Bandwidth:  300.99MB/s
  Status codes: 2xx=774200, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 774199 / 774200 responses (100.0%)
  Reconnects: 30664
  Per-template: 154343,154362,155282,155413,154799
  Per-template-ok: 154343,154362,155282,155413,154799
[info] CPU 5427.1% | Mem 3.3GiB

[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   12.93ms   9.35ms   28.20ms   57.20ms   96.50ms

  766095 requests in 10.00s, 766098 responses
  Throughput: 76.59K req/s
  Bandwidth:  297.63MB/s
  Status codes: 2xx=766098, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 766094 / 766098 responses (100.0%)
  Reconnects: 30363
  Per-template: 152637,153372,153470,153599,153016
  Per-template-ok: 152637,153372,153470,153599,153016
[info] CPU 5350.9% | Mem 3.3GiB

=== Best: 77420 req/s (CPU: 5427.1%, Mem: 3.3GiB) ===
[info] input BW: 5.17MB/s (avg template: 70 bytes)
[info] saved results/async-db/1024/mq-bridge-py.json
httparena-bench-mq-bridge-py
httparena-bench-mq-bridge-py
[info] skip: mq-bridge-py does not subscribe to crud
[info] skip: mq-bridge-py does not subscribe to fortunes
[info] skip: mq-bridge-py does not subscribe to baseline-h2
[info] skip: mq-bridge-py does not subscribe to static-h2
[info] skip: mq-bridge-py does not subscribe to baseline-h2c
[info] skip: mq-bridge-py does not subscribe to json-h2c
[info] skip: mq-bridge-py does not subscribe to baseline-h3
[info] skip: mq-bridge-py does not subscribe to static-h3
[info] skip: mq-bridge-py does not subscribe to gateway-64
[info] skip: mq-bridge-py does not subscribe to gateway-h3
[info] skip: mq-bridge-py does not subscribe to production-stack
[info] skip: mq-bridge-py does not subscribe to unary-grpc
[info] skip: mq-bridge-py does not subscribe to unary-grpc-tls
[info] skip: mq-bridge-py does not subscribe to stream-grpc
[info] skip: mq-bridge-py does not subscribe to stream-grpc-tls
[info] skip: mq-bridge-py does not subscribe to echo-ws
[info] skip: mq-bridge-py does not subscribe to echo-ws-pipeline
[info] rebuilding site/data/*.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/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/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/limited-conn-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/limited-conn-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-6800.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/upload-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/upload-32.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
[info] restoring loopback MTU to 65536

@marcomq

marcomq commented Jun 14, 2026

Copy link
Copy Markdown
Author

/benchmark -f mq-bridge-websocket
/benchmark -f mq-bridge-py
/benchmark -f mq-bridge
/benchmark -f mq-bridge-h2c

@github-actions

Copy link
Copy Markdown
Contributor

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

@MDA2AV

MDA2AV commented Jun 14, 2026

Copy link
Copy Markdown
Owner

/benchmark -f mq-bridge-h2c

@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: mq-bridge-h2c | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline-h2c 256 595,623 4427.5% 260MiB NEW NEW
baseline-h2c 1024 540,833 4514.3% 775MiB NEW NEW
baseline-h2c 4096 487,945 4468.2% 2.3GiB NEW NEW
json-h2c 1024 529,664 3249.2% 397MiB NEW NEW
json-h2c 4096 489,184 3185.7% 1.1GiB NEW NEW
Full log
.Main benchmark duration is started for thread #56.


.
42.
.
21..



finished in 5.05s, 529006.80 req/s, 1.76GB/s
requests: 2645034 total, 2677802 started, 2645034 done, 2645034 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 2645733 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 8.80GB (9444893691) total, 89.96MB (94330226) headers (space savings 76.19%), 8.66GB (9302890242) data
                     min         max         mean         sd        +/- sd
time for request:       54us    187.43ms     60.26ms     30.69ms    68.78%
time for connect:       19us      1.05ms       386us       216us    63.87%
time to 1st byte:     1.20ms    136.21ms     21.55ms     23.97ms    85.74%
req/s           :     444.51      621.56      516.53       26.18    69.43%
[info] CPU 3200.5% | Mem 367MiB

[run 3/3]
starting benchmark...
63Main benchmark duration is started for thread #20.
.
22.
22Main benchmark duration is started for thread #53.
.
38Main benchmark duration is started for thread #10.Warm-up phase is over for thread #.
.
.
3231.
.Main benchmark duration is started for thread #32.


.
15.
Application protocol: h2c
63. Stopping all clients.
29. Stopping all clients.
38Stopped all clients for thread #22
. Stopping all clients.


20. Stopping all clients.
16. Stopping all clients.

finished in 5.05s, 534857.80 req/s, 1.78GB/s
requests: 2674289 total, 2707057 started, 2674289 done, 2674289 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 2674807 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 8.89GB (9549528014) total, 91.07MB (95493340) headers (space savings 76.15%), 8.76GB (9405836490) data
                     min         max         mean         sd        +/- sd
time for request:       53us    173.71ms     59.67ms     30.80ms    67.72%
time for connect:       24us       988us       377us       210us    64.36%
time to 1st byte:     1.12ms    121.77ms     23.90ms     21.76ms    75.59%
req/s           :     455.91      637.81      522.25       28.65    67.29%
[info] CPU 3249.2% | Mem 397MiB

=== Best: 529664 req/s (CPU: 3249.2%, Mem: 397MiB) ===
[info] saved results/json-h2c/1024/mq-bridge-h2c.json
httparena-bench-mq-bridge-h2c
httparena-bench-mq-bridge-h2c

==============================================
=== mq-bridge-h2c / json-h2c / 4096c (tool=h2load) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
starting benchmark...
52.Warm-up phase is over for thread #14.
37Warm-up phase is over for thread #.53Warm-up phase is over for thread #Warm-up phase is over for thread #26.23.


.
54
.


Application protocol: h2c
5. Stopping all clients.
4
. Stopping all clients.
24. Stopping all clients.



finished in 5.11s, 432137.80 req/s, 1.43GB/s
requests: 2160689 total, 2291761 started, 2160689 done, 2160689 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 2162409 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 7.17GB (7697106344) total, 73.96MB (77554515) headers (space savings 76.04%), 7.06GB (7580418640) data
                     min         max         mean         sd        +/- sd
time for request:       44us       1.24s    300.68ms    235.71ms    52.96%
time for connect:       15us      6.70ms      2.39ms      1.78ms    59.01%
time to 1st byte:     3.65ms    965.77ms    345.84ms    247.75ms    65.43%
req/s           :      62.75      172.12      105.46       14.96    68.55%
[info] CPU 2868.0% | Mem 989MiB

[run 2/3]
starting benchmark...
.30Warm-up phase is over for thread #41.
.

.
.
..

3960..

45Main benchmark duration is started for thread #2.
.

1Main benchmark duration is started for thread #16.
.
57.Main benchmark duration is started for thread #11.

Application protocol: h2c
44.
52.
28.
40

42. Stopping all clients.
38. Stopping all clients.

finished in 5.09s, 497664.00 req/s, 1.65GB/s
requests: 2488320 total, 2619392 started, 2488320 done, 2488320 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 2489949 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 8.26GB (8867325040) total, 85.07MB (89202157) headers (space savings 76.07%), 8.13GB (8733093182) data
                     min         max         mean         sd        +/- sd
time for request:       56us    992.92ms    245.99ms    187.62ms    56.78%
time for connect:       17us      7.35ms      3.03ms      2.26ms    53.47%
time to 1st byte:     3.40ms    718.65ms     40.76ms     56.66ms    92.43%
req/s           :      71.99      196.45      121.44       17.20    68.80%
[info] CPU 3185.7% | Mem 1.1GiB

[run 3/3]
starting benchmark...
48.
4.
.Main benchmark duration is started for thread #12.
.Main benchmark duration is started for thread #25.
39.


33.
.Warm-up phase is over for thread #56.


.Main benchmark duration is started for thread #50.

8.
Application protocol: h2c
54Main benchmark duration is over for thread #. Stopping all clients.
10Main benchmark duration is over for thread #30. Stopping all clients.
. Stopping all clients.
33. Stopping all clients.
. Stopping all clients.
26Main benchmark duration is over for thread #. Stopping all clients.
61Stopped all clients for thread #Stopped all clients for thread #33
26


finished in 5.11s, 489734.20 req/s, 1.63GB/s
requests: 2448671 total, 2579743 started, 2448671 done, 2448671 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 2450344 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 8.13GB (8725253704) total, 83.72MB (87789482) headers (space savings 76.07%), 8.00GB (8593147798) data
                     min         max         mean         sd        +/- sd
time for request:       52us    942.03ms    250.82ms    187.53ms    56.13%
time for connect:       16us      7.35ms      2.57ms      1.96ms    57.96%
time to 1st byte:     4.56ms    765.97ms     39.04ms     38.55ms    91.26%
req/s           :      76.15      190.90      119.50       16.23    69.82%
[info] CPU 3220.3% | Mem 1.1GiB

=== Best: 489184 req/s (CPU: 3185.7%, Mem: 1.1GiB) ===
[info] saved results/json-h2c/4096/mq-bridge-h2c.json
httparena-bench-mq-bridge-h2c
httparena-bench-mq-bridge-h2c
[info] skip: mq-bridge-h2c does not subscribe to baseline-h3
[info] skip: mq-bridge-h2c does not subscribe to static-h3
[info] skip: mq-bridge-h2c does not subscribe to gateway-64
[info] skip: mq-bridge-h2c does not subscribe to gateway-h3
[info] skip: mq-bridge-h2c does not subscribe to production-stack
[info] skip: mq-bridge-h2c does not subscribe to unary-grpc
[info] skip: mq-bridge-h2c does not subscribe to unary-grpc-tls
[info] skip: mq-bridge-h2c does not subscribe to stream-grpc
[info] skip: mq-bridge-h2c does not subscribe to stream-grpc-tls
[info] skip: mq-bridge-h2c does not subscribe to echo-ws
[info] skip: mq-bridge-h2c does not subscribe to echo-ws-pipeline
[info] rebuilding site/data/*.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2c-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2c-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2c-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-h2c-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-h2c-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
[info] restoring loopback MTU to 65536

@MDA2AV

MDA2AV commented Jun 14, 2026

Copy link
Copy Markdown
Owner

/benchmark -f mq-bridge-py

@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: mq-bridge-py | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 833,928 6636.5% 1.0GiB NEW NEW
baseline 4096 1,200,436 6583.2% 1.6GiB NEW NEW
pipelined 512 1,615,228 6491.9% 1015MiB NEW NEW
pipelined 4096 2,681,871 6520.3% 1.3GiB NEW NEW
limited-conn 512 662,290 6559.1% 1.5GiB NEW NEW
limited-conn 4096 935,944 6525.0% 3.1GiB NEW NEW
json 4096 332,731 6528.9% 1.7GiB NEW NEW
json-comp 512 59,955 6447.0% 1.5GiB NEW NEW
json-comp 4096 99,119 6478.9% 2.9GiB NEW NEW
json-comp 16384 145,023 6321.3% 5.0GiB NEW NEW
upload 32 1,122 3320.3% 22.1GiB NEW NEW
upload 256 1,108 6314.5% 31.0GiB NEW NEW
api-4 256 11,783 402.0% 2.7GiB NEW NEW
api-16 1024 35,826 1732.6% 3.1GiB NEW NEW
static 1024 343,736 6626.0% 1.9GiB NEW NEW
static 4096 371,709 6582.3% 4.7GiB NEW NEW
static 6800 357,482 6526.7% 8.3GiB NEW NEW
async-db 1024 76,213 5382.8% 3.3GiB NEW NEW
Full log
[info] CPU 6568.4% | Mem 3.8GiB

[run 2/3]
Running 5s test @ http://localhost:8080
  64 threads and 4096 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    11.39ms    6.47ms 120.50ms   76.45%
    Req/Sec     5.85k   722.71    27.83k    97.97%
  1895662 requests in 5.10s, 32.59GB read
Requests/sec: 371709.51
Transfer/sec:      6.39GB
[info] CPU 6582.3% | Mem 4.7GiB

[run 3/3]
Running 5s test @ http://localhost:8080
  64 threads and 4096 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    11.37ms    6.30ms 112.56ms   75.83%
    Req/Sec     5.84k   594.76    18.10k    97.55%
  1893838 requests in 5.10s, 32.56GB read
Requests/sec: 371344.35
Transfer/sec:      6.38GB
[info] CPU 6545.7% | Mem 5.5GiB

=== Best: 371709 req/s (CPU: 6582.3%, Mem: 4.7GiB) ===
[info] saved results/static/4096/mq-bridge-py.json
httparena-bench-mq-bridge-py
httparena-bench-mq-bridge-py

==============================================
=== mq-bridge-py / static / 6800c (tool=wrk) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
Running 5s test @ http://localhost:8080
  64 threads and 6800 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    22.68ms   14.87ms 281.66ms   81.38%
    Req/Sec     4.99k     0.89k   28.64k    93.00%
  1617630 requests in 5.10s, 27.81GB read
Requests/sec: 317013.03
Transfer/sec:      5.45GB
[info] CPU 6546.6% | Mem 5.4GiB

[run 2/3]
Running 5s test @ http://localhost:8080
  64 threads and 6800 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    19.85ms   11.15ms 225.63ms   77.54%
    Req/Sec     5.55k   816.73    25.23k    97.91%
  1797667 requests in 5.10s, 30.90GB read
Requests/sec: 352472.39
Transfer/sec:      6.06GB
[info] CPU 6569.2% | Mem 6.8GiB

[run 3/3]
Running 5s test @ http://localhost:8080
  64 threads and 6800 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    19.58ms   10.99ms 218.97ms   77.31%
    Req/Sec     5.62k   753.30    21.42k    98.13%
  1823198 requests in 5.10s, 31.34GB read
Requests/sec: 357482.37
Transfer/sec:      6.14GB
[info] CPU 6526.7% | Mem 8.3GiB

=== Best: 357482 req/s (CPU: 6526.7%, Mem: 8.3GiB) ===
[info] saved results/static/6800/mq-bridge-py.json
httparena-bench-mq-bridge-py
httparena-bench-mq-bridge-py

==============================================
=== mq-bridge-py / async-db / 1024c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/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   13.18ms   8.62ms   29.70ms   69.30ms   110.70ms

  754769 requests in 10.00s, 754771 responses
  Throughput: 75.46K req/s
  Bandwidth:  293.28MB/s
  Status codes: 2xx=754771, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 754769 / 754771 responses (100.0%)
  Reconnects: 29923
  Per-template: 149814,151083,151872,151491,150509
  Per-template-ok: 149814,151083,151872,151491,150509
[info] CPU 5259.3% | Mem 3.2GiB

[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   13.03ms   8.86ms   29.10ms   61.00ms   110.50ms

  762134 requests in 10.00s, 762137 responses
  Throughput: 76.20K req/s
  Bandwidth:  296.33MB/s
  Status codes: 2xx=762137, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 762137 / 762137 responses (100.0%)
  Reconnects: 30174
  Per-template: 151990,151938,152647,153130,152432
  Per-template-ok: 151990,151938,152647,153130,152432
[info] CPU 5382.8% | Mem 3.3GiB

[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   13.04ms   9.25ms   28.60ms   58.00ms   91.20ms

  759953 requests in 10.00s, 759954 responses
  Throughput: 75.98K req/s
  Bandwidth:  295.23MB/s
  Status codes: 2xx=759954, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 759952 / 759954 responses (100.0%)
  Reconnects: 30098
  Per-template: 151689,151905,152183,152309,151866
  Per-template-ok: 151689,151905,152183,152309,151866
[info] CPU 5332.9% | Mem 3.4GiB

=== Best: 76213 req/s (CPU: 5382.8%, Mem: 3.3GiB) ===
[info] input BW: 5.09MB/s (avg template: 70 bytes)
[info] saved results/async-db/1024/mq-bridge-py.json
httparena-bench-mq-bridge-py
httparena-bench-mq-bridge-py
[info] skip: mq-bridge-py does not subscribe to crud
[info] skip: mq-bridge-py does not subscribe to fortunes
[info] skip: mq-bridge-py does not subscribe to baseline-h2
[info] skip: mq-bridge-py does not subscribe to static-h2
[info] skip: mq-bridge-py does not subscribe to baseline-h2c
[info] skip: mq-bridge-py does not subscribe to json-h2c
[info] skip: mq-bridge-py does not subscribe to baseline-h3
[info] skip: mq-bridge-py does not subscribe to static-h3
[info] skip: mq-bridge-py does not subscribe to gateway-64
[info] skip: mq-bridge-py does not subscribe to gateway-h3
[info] skip: mq-bridge-py does not subscribe to production-stack
[info] skip: mq-bridge-py does not subscribe to unary-grpc
[info] skip: mq-bridge-py does not subscribe to unary-grpc-tls
[info] skip: mq-bridge-py does not subscribe to stream-grpc
[info] skip: mq-bridge-py does not subscribe to stream-grpc-tls
[info] skip: mq-bridge-py does not subscribe to echo-ws
[info] skip: mq-bridge-py does not subscribe to echo-ws-pipeline
[info] rebuilding site/data/*.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/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/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/limited-conn-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/limited-conn-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-6800.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/upload-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/upload-32.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
[info] restoring loopback MTU to 65536

@MDA2AV

MDA2AV commented Jun 14, 2026

Copy link
Copy Markdown
Owner

/benchmark -f mq-bridge

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

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 1,063,816 4572.3% 84MiB NEW NEW
baseline 4096 1,166,116 5617.4% 179MiB NEW NEW
pipelined 512 1,300,416 6146.7% 39MiB NEW NEW
pipelined 4096 1,297,113 6213.0% 169MiB NEW NEW
limited-conn 512 708,439 4573.7% 87MiB NEW NEW
limited-conn 4096 712,189 5497.4% 249MiB NEW NEW
json 4096 911,752 6214.9% 261MiB NEW NEW
json-comp 512 73,846 5741.1% 77MiB NEW NEW
json-comp 4096 380,976 5933.1% 235MiB NEW NEW
json-comp 16384 396,326 6000.6% 755MiB NEW NEW
upload 32 1,408 2917.2% 1.6GiB NEW NEW
upload 256 1,488 5035.4% 4.8GiB NEW NEW
api-4 256 39,332 388.8% 45MiB NEW NEW
api-16 1024 80,026 1360.0% 105MiB NEW NEW
static 1024 493,157 6591.3% 242MiB NEW NEW
static 4096 484,844 6588.7% 795MiB NEW NEW
static 6800 487,738 6606.2% 1.3GiB NEW NEW
async-db 1024 116,577 4748.1% 137MiB NEW NEW
baseline-h2 256 538,198 4288.3% 260MiB NEW NEW
baseline-h2 1024 489,027 4454.2% 767MiB NEW NEW
static-h2 256 331,390 5582.1% 145MiB NEW NEW
static-h2 1024 245,111 3675.9% 353MiB NEW NEW
Full log
[info] CPU 5628.1% | Mem 142MiB

[run 3/3]
starting benchmark...
12.
20..



.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2
62.
.Main benchmark duration is started for thread #37.

30.Warm-up phase is over for thread #Main benchmark duration is started for thread #17.

63.
36Main benchmark duration is over for thread #32. Stopping all clients.


23Stopped all clients for thread #22


finished in 5.04s, 333982.80 req/s, 8.06GB/s
requests: 1669914 total, 1678106 started, 1669914 done, 1669914 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 1670208 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 40.31GB (43282673278) total, 61.47MB (64459072) headers (space savings 76.57%), 40.21GB (43170851972) data
                     min         max         mean         sd        +/- sd
time for request:       80us    146.15ms     24.12ms     19.10ms    76.42%
time for connect:     4.11ms     80.06ms     16.90ms     11.59ms    87.50%
time to 1st byte:     6.65ms    106.79ms     30.46ms     14.42ms    82.03%
req/s           :    1013.68     1619.50     1304.40      110.65    69.53%
[info] CPU 5582.1% | Mem 145MiB

=== Best: 331390 req/s (CPU: 5582.1%, Mem: 145MiB) ===
[info] saved results/static-h2/256/mq-bridge.json
httparena-bench-mq-bridge
httparena-bench-mq-bridge

==============================================
=== mq-bridge / static-h2 / 1024c (tool=h2load) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
starting benchmark...
4.
2progress: .81
% of clients started

.
.Warm-up phase is over for thread #54
.

TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2
56Main benchmark duration is over for thread #0. Stopping all clients.
. Stopping all clients.
59

30Stopped all clients for thread #9
. Stopping all clients.

finished in 5.08s, 217018.20 req/s, 5.24GB/s
requests: 1085091 total, 1117859 started, 1085091 done, 1085091 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 1085323 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 26.21GB (28147524391) total, 39.97MB (41910473) headers (space savings 76.56%), 26.15GB (28074779839) data
                     min         max         mean         sd        +/- sd
time for request:       69us    476.59ms    145.56ms     70.92ms    72.33%
time for connect:     3.59ms    134.48ms     55.22ms     34.22ms    55.86%
time to 1st byte:     4.45ms    376.14ms    144.71ms     78.65ms    66.41%
req/s           :     168.79      291.76      211.89       18.41    72.95%
[info] CPU 3584.5% | Mem 310MiB

[run 2/3]
starting benchmark...
20.
58.
58.

.

19.
57.
39Main benchmark duration is started for thread #.
.

50.
0.
.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2
45.
29.
55.
. Stopping all clients.
. Stopping all clients.Main benchmark duration is over for thread #
59
. Stopping all clients.
. Stopping all clients.
37. Stopping all clients.

finished in 5.06s, 238168.00 req/s, 5.75GB/s
requests: 1190840 total, 1223608 started, 1190840 done, 1190840 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 1191088 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 28.76GB (30884900281) total, 43.92MB (46058626) headers (space savings 76.52%), 28.69GB (30805011116) data
                     min         max         mean         sd        +/- sd
time for request:       82us    444.47ms    132.19ms     64.44ms    72.90%
time for connect:     4.66ms    123.55ms     55.55ms     33.44ms    57.52%
time to 1st byte:    37.05ms    351.64ms    133.02ms     57.52ms    69.43%
req/s           :     185.19      304.78      232.54       18.45    71.00%
[info] CPU 3583.8% | Mem 340MiB

[run 3/3]
starting benchmark...
10.
24Main benchmark duration is started for thread #19.
.
56.
63.
8.
.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2
33.

59.
52.
11. Stopping all clients.

6. Stopping all clients.
44. Stopping all clients.
. Stopping all clients.

finished in 5.06s, 248017.00 req/s, 5.99GB/s
requests: 1240085 total, 1272853 started, 1240085 done, 1240085 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 1240265 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 29.95GB (32162331170) total, 45.68MB (47902001) headers (space savings 76.55%), 29.88GB (32079202388) data
                     min         max         mean         sd        +/- sd
time for request:       76us    421.34ms    127.05ms     62.98ms    71.22%
time for connect:     3.69ms    125.98ms     54.75ms     33.62ms    56.35%
time to 1st byte:    18.80ms    361.60ms    130.64ms     62.01ms    68.26%
req/s           :     195.75      307.50      242.15       19.80    69.82%
[info] CPU 3675.9% | Mem 353MiB

=== Best: 245111 req/s (CPU: 3675.9%, Mem: 353MiB) ===
[info] saved results/static-h2/1024/mq-bridge.json
httparena-bench-mq-bridge
httparena-bench-mq-bridge
[info] skip: mq-bridge does not subscribe to baseline-h2c
[info] skip: mq-bridge does not subscribe to json-h2c
[info] skip: mq-bridge does not subscribe to baseline-h3
[info] skip: mq-bridge does not subscribe to static-h3
[info] skip: mq-bridge does not subscribe to gateway-64
[info] skip: mq-bridge does not subscribe to gateway-h3
[info] skip: mq-bridge does not subscribe to production-stack
[info] skip: mq-bridge does not subscribe to unary-grpc
[info] skip: mq-bridge does not subscribe to unary-grpc-tls
[info] skip: mq-bridge does not subscribe to stream-grpc
[info] skip: mq-bridge does not subscribe to stream-grpc-tls
[info] skip: mq-bridge does not subscribe to echo-ws
[info] skip: mq-bridge does not subscribe to echo-ws-pipeline
[info] rebuilding site/data/*.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/api-16-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/api-4-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/async-db-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/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/limited-conn-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/limited-conn-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-6800.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-h2-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-h2-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/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
[info] restoring loopback MTU to 65536

@MDA2AV

MDA2AV commented Jun 14, 2026

Copy link
Copy Markdown
Owner

/benchmark -f mq-bridge-websocket

@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: mq-bridge-websocket | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
echo-ws 512 58,939 387.6% 232MiB NEW NEW
echo-ws 4096 57,524 402.4% 563MiB NEW NEW
echo-ws 16384 55,912 433.4% 1.1GiB NEW NEW
Full log


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   8.28ms   8.67ms   9.18ms   9.77ms   10.10ms

  291334 frames sent in 5.00s, 291173 frames received
  Throughput: 58.21K req/s
  Bandwidth:  402.00KB/s
  WS upgrades: 512
  WS frames:   291173
  Latency samples: 291172 / 291173 responses (100.0%)
[info] CPU 390.9% | Mem 329MiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   8.19ms   8.62ms   9.19ms   9.81ms   10.90ms

  292260 frames sent in 5.00s, 292088 frames received
  Throughput: 58.40K req/s
  Bandwidth:  403.54KB/s
  WS upgrades: 512
  WS frames:   292088
  Latency samples: 292088 / 292088 responses (100.0%)
[info] CPU 388.4% | Mem 493MiB

=== Best: 58939 req/s (CPU: 387.6%, Mem: 232MiB) ===
[info] saved results/echo-ws/512/mq-bridge-websocket.json
httparena-bench-mq-bridge-websocket
httparena-bench-mq-bridge-websocket

==============================================
=== mq-bridge-websocket / echo-ws / 4096c (tool=gcannon) ===
==============================================
[info] ws-only framework — skipping HTTP probe (sleep 2s for startup)

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   28.60ms   30.00ms   48.50ms   51.30ms   52.00ms

  290135 frames sent in 5.00s, 287624 frames received
  Throughput: 57.50K req/s
  Bandwidth:  456.34KB/s
  WS upgrades: 2886
  WS frames:   287624
  Latency samples: 287623 / 287624 responses (100.0%)
[info] CPU 402.4% | Mem 563MiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   39.16ms   45.60ms   52.10ms   55.10ms   56.00ms

  287199 frames sent in 5.00s, 284853 frames received
  Throughput: 56.95K req/s
  Bandwidth:  448.40KB/s
  WS upgrades: 3055
  WS frames:   284853
  Latency samples: 284852 / 284853 responses (100.0%)
[info] CPU 406.7% | Mem 663MiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   46.24ms   49.20ms   70.80ms   74.10ms   75.80ms

  284875 frames sent in 5.00s, 281498 frames received
  Throughput: 56.28K req/s
  Bandwidth:  469.78KB/s
  WS upgrades: 4096
  WS frames:   281498
  Latency samples: 281497 / 281498 responses (100.0%)
[info] CPU 408.9% | Mem 1.0GiB

=== Best: 57524 req/s (CPU: 402.4%, Mem: 563MiB) ===
[info] saved results/echo-ws/4096/mq-bridge-websocket.json
httparena-bench-mq-bridge-websocket
httparena-bench-mq-bridge-websocket

==============================================
=== mq-bridge-websocket / echo-ws / 16384c (tool=gcannon) ===
==============================================
[info] ws-only framework — skipping HTTP probe (sleep 2s for startup)

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   44.55ms   43.50ms   85.20ms   95.40ms   97.10ms

  283989 frames sent in 5.00s, 279023 frames received
  Throughput: 55.78K req/s
  Bandwidth:  506.42KB/s
  WS upgrades: 5083
  WS frames:   279023
  Latency samples: 279023 / 279023 responses (100.0%)
[info] CPU 401.0% | Mem 868MiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   84.24ms   88.20ms   130.80ms   143.10ms   145.40ms

  287344 frames sent in 5.00s, 279560 frames received
  Throughput: 55.89K req/s
  Bandwidth:  578.14KB/s
  WS upgrades: 7784
  WS frames:   279560
  Latency samples: 279560 / 279560 responses (100.0%)
[info] CPU 433.4% | Mem 1.1GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   153.76ms   158.70ms   201.50ms   209.30ms   210.30ms

  286247 frames sent in 5.00s, 274668 frames received
  Throughput: 54.91K req/s
  Bandwidth:  667.03KB/s
  WS upgrades: 11579
  WS frames:   274668
  Latency samples: 274668 / 274668 responses (100.0%)
[info] CPU 451.9% | Mem 2.3GiB

=== Best: 55912 req/s (CPU: 433.4%, Mem: 1.1GiB) ===
[info] saved results/echo-ws/16384/mq-bridge-websocket.json
httparena-bench-mq-bridge-websocket
httparena-bench-mq-bridge-websocket
[info] skip: mq-bridge-websocket does not subscribe to echo-ws-pipeline
[info] rebuilding site/data/*.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-16384.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
[info] restoring loopback MTU to 65536

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants