Skip to content

swerver v0.1.0-alpha.24: drop pre-encoded, std.json /json, add async-db + fortunes#863

Merged
MDA2AV merged 3 commits into
MDA2AV:mainfrom
justinGrosvenor:swerver-engine-alpha24
Jun 13, 2026
Merged

swerver v0.1.0-alpha.24: drop pre-encoded, std.json /json, add async-db + fortunes#863
MDA2AV merged 3 commits into
MDA2AV:mainfrom
justinGrosvenor:swerver-engine-alpha24

Conversation

@justinGrosvenor

Copy link
Copy Markdown
Contributor

Updates the existing swerver engine entry to serve every response through the real router and handlers, and adds the database profiles.

Changes vs the current entry (alpha.15):

  • Pre-encoded response registry off. No pre-computed response bodies and no validator-shaped JSON; dynamic responses go through the real handlers.
  • /json via the framework's std.json-based ctx.jsonValue (comptime-specialized fast path) instead of hand-rolled bufPrint. Serialized per request from live data.
  • Adds async-db and fortunes on swerver's native async PostgreSQL client (pipelined, prepared-statement cache, park/resume).
  • In-memory static file cache with .br/.gz precompressed negotiation. Standard caching, permitted for an engine-type entry; real bytes with fresh headers per request, not memoized response bodies.
  • One multi-listener process for all four protocol ports, previously four separate instances.
  • Pins swerver v0.1.0-alpha.24.

Validated with scripts/validate.sh swerver: 57 passed, 0 failed across all 16 subscribed profiles (json full-schema, static + precompressed, async-db, fortunes included).

Brings the engine entry up to the standard learned from the tuned work:
- pre-encoded response registry OFF (preencoded:false): no pre-computed
  response bodies, no validator-shaped JSON
- /json serialized per request via the framework's std.json-based ctx.jsonValue
  (comptime fast path, alpha.24), not hand-rolled bufPrint
- in-memory static file cache ON (cache_static_files:true) with .br/.gz
  precompressed negotiation, a standard optimization that is rules-permitted for
  an engine entry (static profiles carry no type rules for engines)
- adds async-db and fortunes profiles (native async PG client, db_routes.zig)
- one multi-listener process for all four protocol ports (was four instances)
- pins swerver v0.1.0-alpha.24

Every response comes from the real router and handlers. The only caching is of
static file contents (real bytes, fresh headers per request), not response bodies.
@justinGrosvenor justinGrosvenor force-pushed the swerver-engine-alpha24 branch from ef3c55e to 3b89b9d Compare June 13, 2026 06:10
@justinGrosvenor

Copy link
Copy Markdown
Contributor Author

/benchmark -f swerver

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

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 3,505,228 6567.9% 1.0GiB +0.4% -58.3%
baseline 4096 3,690,935 6398.5% 1.0GiB +1.5% -58.3%
pipelined 512 24,198,755 6834.7% 1020MiB +120.1% -56.7%
pipelined 4096 24,235,536 6791.0% 1.0GiB -4.1% -58.3%
limited-conn 512 2,295,235 5811.1% 1.0GiB -3.6% -58.3%
limited-conn 4096 2,619,896 6076.7% 1.1GiB +0.8% -54.2%
json 4096 1,880,835 6451.1% 1.1GiB -9.4% -56.0%
json-comp 512 393,159 5990.2% 1.0GiB -15.3% -58.3%
json-comp 4096 419,299 6421.8% 1.1GiB -17.6% -54.2%
json-comp 16384 415,005 6327.7% 1.2GiB -15.6% -52.0%
json-tls 4096 1,532,467 6533.4% 1.3GiB -8.1% -50.0%
upload 32 2,127 2003.7% 2.5GiB +0.9% -35.9%
upload 256 2,225 5297.2% 2.6GiB +0.9% -35.0%
static 1024 1,413,503 5610.9% 1.1GiB +38.3% -54.2%
static 4096 1,328,367 6191.1% 1.3GiB +18.7% -45.8%
static 6800 1,200,721 6187.8% 1.3GiB +5.0% -45.8%
async-db 1024 369,946 3829.3% 1.1GiB NEW NEW
fortunes 1024 291,356 3508.6% 1.1GiB NEW NEW
baseline-h2 256 3,989,160 5648.6% 1.2GiB +2.1% -53.8%
baseline-h2 1024 4,240,487 6187.1% 1.7GiB +0.7% -45.2%
static-h2 256 1,133,508 6423.6% 1.4GiB +265.2% -41.7%
static-h2 1024 1,080,649 6339.3% 2.2GiB +255.8% -40.5%
baseline-h2c 256 12,486,311 4188.5% 1.1GiB -4.0% -56.0%
baseline-h2c 1024 12,829,909 4304.5% 1.5GiB -4.5% -48.3%
baseline-h2c 4096 11,713,810 3915.6% 3.0GiB -4.7% -31.8%
json-h2c 1024 4,657,247 6498.0% 1.5GiB -1.2% -48.3%
json-h2c 4096 4,533,404 6348.6% 3.0GiB -2.0% -31.8%
baseline-h3 64 922,805 4400.2% 988MiB +3.6% -58.1%
static-h3 64 406,143 3530.6% 1.2GiB +28.2% -47.8%
Full log
requests: 4316141 total, 4320237 started, 4316141 done, 4316141 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 4316141 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 164.65MB (172646536) total, 144.07MB (151065075) headers (space savings 46.15%), 4.12MB (4316145) data
UDP datagram: 1895455 sent, 4319451 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :      256us     57.06ms      2.21ms     3.96ms     4.79ms     2.19ms      1.77ms    94.96%
connect     :     2.55ms      7.62ms      3.69ms     5.38ms     7.62ms     3.81ms       977us    76.56%
TTFB        :    38.76ms     60.28ms     43.51ms    50.78ms    60.28ms    44.16ms      4.46ms    73.44%
req/s       :    4449.30    25005.05    11867.88   24722.38   25005.05   13487.42     5934.29    75.00%
min RTT     :       30us      2.14ms        52us     1.60ms     2.14ms      379us       557us    79.69%
smoothed RTT:      449us      4.80ms      1.58ms     3.74ms     4.80ms     1.86ms      1.08ms    68.75%
packets sent:      10157       52970       24353      50901      52970   29618.48    13407.00    56.25%
packets recv:      22408      125065       59375     123663     125065   67492.42    29655.38    75.00%
packets lost:          4           4           4          4          4       4.00        0.00   100.00%
GRO packets :          1           1           1          1          1       1.00        0.00   100.00%
[info] CPU 4119.4% | Mem 1.1GiB

[run 3/3]
starting benchmark...

TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Certificate: RSA 2048 bits
Negotiated Group: x25519
Resumption: no
Application protocol: h3
42

finished in 5.01s, 897943.80 req/s, 34.25MB/s
requests: 4489719 total, 4493815 started, 4489719 done, 4489719 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 4489719 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 171.27MB (179589656) total, 149.86MB (157140165) headers (space savings 46.15%), 4.28MB (4489719) data
UDP datagram: 1819061 sent, 4494825 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :      290us     66.11ms      2.39ms     5.86ms     6.08ms     2.65ms      2.17ms    81.07%
connect     :     2.32ms      8.96ms      3.22ms     6.70ms     8.96ms     3.64ms      1.28ms    85.94%
TTFB        :    37.16ms     69.87ms     40.86ms    59.33ms    69.87ms    42.87ms      6.08ms    90.63%
req/s       :    3026.14    25028.95    11225.39   24891.24   25028.95   14029.96     7671.20    54.69%
min RTT     :       31us      3.79ms        50us     2.48ms     3.79ms      524us       828us    87.50%
smoothed RTT:      438us      6.06ms      1.88ms     5.74ms     6.06ms     2.39ms      1.66ms    75.00%
packets sent:       7265       53213       24104      50662      53213   28424.83    14598.14    57.81%
packets recv:      15449      125170       56207     124490     125170   70232.64    38311.31    54.69%
packets lost:          4           4           4          4          4       4.00        0.00   100.00%
GRO packets :          1           1           1          1          1       1.00        0.00   100.00%
[info] CPU 4146.3% | Mem 1.2GiB

=== Best: 922805 req/s (CPU: 4400.2%, Mem: 988MiB) ===
[info] saved results/baseline-h3/64/swerver.json
httparena-bench-swerver
httparena-bench-swerver

==============================================
=== swerver / static-h3 / 64c (tool=h2load-h3) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
starting benchmark...
4.
16.
.

TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Certificate: RSA 2048 bits
Negotiated Group: x25519
Resumption: no
Application protocol: h3

56.


finished in 5.01s, 376725.00 req/s, 5.73GB/s
requests: 1883625 total, 1887721 started, 1883625 done, 1883625 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 1883637 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 28.65GB (30762365443) total, 98.53MB (103317669) headers (space savings 42.72%), 28.54GB (30643602253) data
UDP datagram: 1737644 sent, 26496560 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :       81us     61.60ms       201us      499us      630us      241us       551us    99.90%
connect     :     2.89ms      9.05ms      4.77ms     7.00ms     9.05ms     4.94ms      1.16ms    75.00%
TTFB        :    39.65ms     67.76ms     47.29ms    57.55ms    67.76ms    48.31ms      4.90ms    81.25%
req/s       :    1861.77     9446.71     6172.71    7987.82    9446.71    5886.11     1432.71    73.44%
min RTT     :       12us       240us        44us       87us      240us       50us        31us    82.81%
smoothed RTT:       88us       550us       125us      317us      550us      158us        85us    87.50%
packets sent:       9347       35693       28328      34560      35693   27152.69     6466.92    67.19%
packets recv:     130801      663947      434231     561684     663947  414009.75   100658.77    73.44%
packets lost:          5           5           5          5          5       5.00        0.00   100.00%
GRO packets :          1          45           8         40         45      13.15       12.91    81.32%
[info] CPU 3208.9% | Mem 997MiB

[run 2/3]
starting benchmark...
0.

TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Certificate: RSA 2048 bits
Negotiated Group: x25519
Resumption: no
Application protocol: h3

finished in 5.01s, 391617.00 req/s, 5.96GB/s
requests: 1958085 total, 1962181 started, 1958085 done, 1958085 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 1958112 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 29.78GB (31978412601) total, 102.43MB (107402791) headers (space savings 42.72%), 29.67GB (31854987010) data
UDP datagram: 1736278 sent, 27544524 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :       76us     58.87ms       208us      439us      540us      236us       534us    99.96%
connect     :     2.65ms      8.01ms      3.95ms     5.75ms     8.01ms     4.05ms      1.19ms    68.75%
TTFB        :    38.52ms     63.78ms     44.38ms    53.47ms    63.78ms    44.87ms      5.62ms    71.88%
req/s       :    2157.03     9986.26     6105.19    9787.31    9986.26    6118.81     2118.48    62.50%
min RTT     :       12us       215us        43us       94us      215us       48us        36us    92.19%
smoothed RTT:       89us       407us       129us      311us      407us      155us        70us    87.50%
packets sent:      10872       35629       29793      34842      35629   27131.34     6807.66    67.19%
packets recv:     151620      701770      429498     687807     701770  430384.19   148792.59    62.50%
packets lost:          5           5           5          5          5       5.00        0.00   100.00%
GRO packets :          1          45           8         40         45      13.13       12.91    81.36%
[info] CPU 3507.2% | Mem 1.1GiB

[run 3/3]
starting benchmark...
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Certificate: RSA 2048 bits
Negotiated Group: x25519
Resumption: no
Application protocol: h3
5. Stopping all clients.

finished in 5.01s, 406955.00 req/s, 6.19GB/s
requests: 2034775 total, 2038871 started, 2034775 done, 2034775 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 2034781 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 30.95GB (33230693776) total, 106.44MB (111608115) headers (space savings 42.72%), 30.83GB (33102504136) data
UDP datagram: 1709162 sent, 28616640 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :       81us     52.33ms       224us      536us      640us      273us       499us    99.91%
connect     :     2.34ms      6.52ms      3.45ms     5.71ms     6.52ms     3.65ms       892us    79.69%
TTFB        :    36.78ms     55.65ms     42.32ms    52.15ms    55.65ms    42.97ms      4.16ms    76.56%
req/s       :    2156.94    10060.93     5938.03    9842.47   10060.93    6358.45     2352.02    62.50%
min RTT     :       12us       183us        40us       97us      183us       45us        32us    57.81%
smoothed RTT:      101us       501us       148us      359us      501us      177us        85us    82.81%
packets sent:      10861       35768       28545      34731      35768   26707.66     7109.57    64.06%
packets recv:     151533      706998      417401     691730     706998  447136.00   165274.31    62.50%
packets lost:          5           5           5          5          5       5.00        0.00   100.00%
GRO packets :          1          45           8         40         45      13.18       12.91    81.28%
[info] CPU 3530.6% | Mem 1.2GiB

=== Best: 406143 req/s (CPU: 3530.6%, Mem: 1.2GiB) ===
[info] saved results/static-h3/64/swerver.json
httparena-bench-swerver
httparena-bench-swerver
[info] skip: swerver does not subscribe to gateway-64
[info] skip: swerver does not subscribe to gateway-h3
[info] skip: swerver does not subscribe to production-stack
[info] skip: swerver does not subscribe to unary-grpc
[info] skip: swerver does not subscribe to unary-grpc-tls
[info] skip: swerver does not subscribe to stream-grpc
[info] skip: swerver does not subscribe to stream-grpc-tls
[info] skip: swerver does not subscribe to echo-ws
[info] skip: swerver 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/async-db-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2c-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2c-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2c-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h3-64.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/fortunes-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-16384.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-h2c-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-h2c-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-tls-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/limited-conn-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/limited-conn-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-6800.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-h2-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-h2-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-h3-64.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/upload-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/upload-32.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
[info] restoring loopback MTU to 65536

@justinGrosvenor

Copy link
Copy Markdown
Contributor Author

/benchmark -f swerver --save

@github-actions

Copy link
Copy Markdown
Contributor

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

@github-actions

Copy link
Copy Markdown
Contributor

⚠️ /benchmark --save cannot start: main has diverged and cannot be auto-merged into this branch. Please merge or rebase main manually, push, and re-run /benchmark --save.

@justinGrosvenor

Copy link
Copy Markdown
Contributor Author

/benchmark -f swerver --save

@github-actions

Copy link
Copy Markdown
Contributor

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

@github-actions

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: swerver | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 3,519,409 6487.1% 1.0GiB +0.8% -58.3%
baseline 4096 3,690,482 6390.7% 1.0GiB +1.5% -58.3%
pipelined 512 24,027,148 6808.4% 1021MiB +118.5% -56.6%
pipelined 4096 24,258,825 6612.6% 1.0GiB -4.0% -58.3%
limited-conn 512 2,306,414 5783.2% 1.0GiB -3.2% -58.3%
limited-conn 4096 2,630,808 6285.8% 1.1GiB +1.2% -54.2%
json 4096 1,897,044 6475.8% 1.1GiB -8.6% -56.0%
json-comp 512 391,723 5930.6% 1.0GiB -15.6% -58.3%
json-comp 4096 427,413 6399.4% 1.1GiB -16.1% -54.2%
json-comp 16384 418,470 6335.6% 1.2GiB -14.9% -52.0%
json-tls 4096 1,522,080 6523.0% 1.3GiB -8.7% -50.0%
upload 32 2,119 1930.0% 2.5GiB +0.5% -35.9%
upload 256 2,204 5325.6% 2.6GiB ~0% -35.0%
static 1024 1,421,524 5636.1% 1.1GiB +39.1% -54.2%
static 4096 1,333,484 6184.8% 1.3GiB +19.1% -45.8%
static 6800 1,196,817 6388.0% 1.4GiB +4.7% -41.7%
async-db 1024 370,745 3795.8% 1.1GiB NEW NEW
fortunes 1024 293,414 4474.9% 1.1GiB NEW NEW
baseline-h2 256 3,953,950 5522.3% 1.1GiB +1.2% -57.7%
baseline-h2 1024 4,258,709 6331.6% 1.6GiB +1.1% -48.4%
static-h2 256 1,140,815 6272.0% 1.5GiB +267.6% -37.5%
static-h2 1024 1,088,303 6529.1% 2.3GiB +258.3% -37.8%
baseline-h2c 256 12,592,507 4197.4% 1.1GiB -3.2% -56.0%
baseline-h2c 1024 12,853,389 4259.0% 1.5GiB -4.3% -48.3%
baseline-h2c 4096 11,766,888 3976.7% 3.0GiB -4.3% -31.8%
json-h2c 1024 4,673,017 6489.7% 1.5GiB -0.8% -48.3%
json-h2c 4096 4,651,866 6349.1% 3.1GiB +0.6% -29.5%
baseline-h3 64 907,695 4240.3% 1.2GiB +1.9% -47.8%
static-h3 64 403,355 3411.1% 1.2GiB +27.3% -47.8%
Full log
packets sent:       5721       70038       19884      51282      70038   25020.22    15513.29    64.06%
packets recv:      10615      129056       54600     128144     129056   64260.69    36758.25    67.19%
packets lost:          4           4           4          4          4       4.00        0.00   100.00%
GRO packets :          1           1           1          1          1       1.00        0.00   100.00%
[info] CPU 3582.8% | Mem 1.1GiB

[run 3/3]
starting benchmark...
0.
2.
.
.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Certificate: RSA 2048 bits
Negotiated Group: x25519
Resumption: no
Application protocol: h3
62.

finished in 5.01s, 909510.40 req/s, 34.70MB/s
requests: 4547552 total, 4551648 started, 4547552 done, 4547552 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 4547552 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 173.48MB (181902976) total, 151.79MB (159164390) headers (space savings 46.15%), 4.34MB (4547554) data
UDP datagram: 1829458 sent, 4550991 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :      261us     56.15ms      2.03ms     6.38ms     6.67ms     2.39ms      2.14ms    86.59%
connect     :     2.34ms      6.31ms      3.83ms     5.59ms     6.31ms     3.86ms       940us    65.63%
TTFB        :    36.75ms     56.71ms     42.07ms    52.13ms    56.71ms    43.63ms      4.34ms    76.56%
req/s       :    4242.08    25187.63    12244.71   25042.32   25187.63   14210.70     6569.60    67.19%
min RTT     :       30us      4.19ms        50us     2.97ms     4.19ms      562us       935us    89.06%
smoothed RTT:      412us      6.64ms      1.55ms     6.60ms     6.64ms     2.12ms      1.65ms    78.13%
packets sent:       8118       54073       22848      50464      54073   28587.28    13912.93    59.38%
packets recv:      21272      125960       61316     125244     125960   71110.23    32834.08    67.19%
packets lost:          4           5           4          4          5       4.02        0.12    98.44%
GRO packets :          1           1           1          1          1       1.00        0.00   100.00%
[info] CPU 4240.3% | Mem 1.2GiB

=== Best: 907695 req/s (CPU: 4240.3%, Mem: 1.2GiB) ===
[info] saved results/baseline-h3/64/swerver.json
httparena-bench-swerver
httparena-bench-swerver

==============================================
=== swerver / static-h3 / 64c (tool=h2load-h3) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
starting benchmark...
60.
1.


TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Certificate: RSA 2048 bits
Negotiated Group: x25519
Resumption: no
Application protocol: h3


finished in 5.01s, 378629.20 req/s, 5.76GB/s
requests: 1893146 total, 1897242 started, 1893146 done, 1893146 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 1893156 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 28.79GB (30917405749) total, 99.03MB (103839926) headers (space savings 42.72%), 28.68GB (30798079649) data
UDP datagram: 1732290 sent, 26631082 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :       82us     57.64ms       208us      468us      613us      238us       559us    99.94%
connect     :     2.67ms      7.92ms      4.61ms     7.18ms     7.92ms     4.77ms      1.13ms    75.00%
TTFB        :    38.53ms     62.52ms     47.25ms    58.35ms    62.52ms    48.46ms      5.01ms    78.13%
req/s       :    1856.89    10019.36     6305.33    9229.68   10019.36    5915.89     1729.22    62.50%
min RTT     :       12us       110us        40us       82us      110us       42us        21us    67.19%
smoothed RTT:       83us       467us       131us      288us      467us      158us        72us    82.81%
packets sent:       9320       35351       30133      34273      35351   27069.03     6775.35    71.88%
packets recv:     130437      704035      443532     648915     704035  416111.66   121464.22    62.50%
packets lost:          5           5           5          5          5       5.00        0.00   100.00%
GRO packets :          1          45           8         40         45      13.14       12.92    81.32%
[info] CPU 3288.4% | Mem 1006MiB

[run 2/3]
starting benchmark...

59.Main benchmark duration is started for thread #25.

26.
27.
41.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Certificate: RSA 2048 bits
Negotiated Group: x25519
Resumption: no
Application protocol: h3

58. Stopping all clients.


finished in 5.01s, 393566.20 req/s, 5.99GB/s
requests: 1967831 total, 1971927 started, 1967831 done, 1967831 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 1967859 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 29.93GB (32137493495) total, 102.94MB (107937183) headers (space savings 42.72%), 29.81GB (32013453646) data
UDP datagram: 1737749 sent, 27681528 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :       77us     56.82ms       215us      404us      495us      237us       515us    99.93%
connect     :     2.65ms      7.32ms      3.46ms     5.02ms     7.32ms     3.67ms       915us    78.13%
TTFB        :    38.21ms     61.08ms     41.96ms    51.53ms    61.08ms    43.04ms      4.14ms    82.81%
req/s       :    2397.95     9766.25     6238.98    9463.18    9766.25    6149.28     1911.55    64.06%
min RTT     :       13us       137us        38us       83us      137us       46us        26us    57.81%
smoothed RTT:       91us       395us       129us      253us      395us      147us        55us    81.25%
packets sent:      12194       34974       29451      34672      34974   27154.33     5996.07    65.63%
packets recv:     168637      686293      438850     665061     686293  432524.88   134187.23    64.06%
packets lost:          5           5           5          5          5       5.00        0.00   100.00%
GRO packets :          1          45           8         40         45      13.13       12.91    81.31%
[info] CPU 3493.9% | Mem 1.1GiB

[run 3/3]
starting benchmark...

11.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Certificate: RSA 2048 bits
Negotiated Group: x25519
Resumption: no
Application protocol: h3
12. Stopping all clients.
3. Stopping all clients.

finished in 5.01s, 404159.20 req/s, 6.15GB/s
requests: 2020796 total, 2024892 started, 2020796 done, 2020796 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 2020813 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 30.74GB (33002636180) total, 105.71MB (110841814) headers (space savings 42.72%), 30.62GB (32875263631) data
UDP datagram: 1695908 sent, 28417951 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :       80us     56.55ms       235us      509us      634us      272us       508us    99.90%
connect     :     2.45ms      7.29ms      3.59ms     5.40ms     7.29ms     3.82ms      1.02ms    71.88%
TTFB        :    37.20ms     61.18ms     42.07ms    50.26ms    61.18ms    42.92ms      4.34ms    84.38%
req/s       :    1876.31    10021.92     6189.26    9811.38   10021.92    6314.78     2165.33    64.06%
min RTT     :       12us       241us        37us       98us      241us       45us        37us    90.63%
smoothed RTT:       85us       427us       130us      364us      427us      174us        91us    82.81%
packets sent:       9428       35619       29320      35255      35619   26500.56     7466.73    68.75%
packets recv:     131783      704283      435416     689549     704283  444031.48   152184.99    64.06%
packets lost:          5           5           5          5          5       5.00        0.00   100.00%
GRO packets :          1          45           8         40         45      13.21       12.91    81.21%
[info] CPU 3411.1% | Mem 1.2GiB

=== Best: 403355 req/s (CPU: 3411.1%, Mem: 1.2GiB) ===
[info] saved results/static-h3/64/swerver.json
httparena-bench-swerver
httparena-bench-swerver
[info] skip: swerver does not subscribe to gateway-64
[info] skip: swerver does not subscribe to gateway-h3
[info] skip: swerver does not subscribe to production-stack
[info] skip: swerver does not subscribe to unary-grpc
[info] skip: swerver does not subscribe to unary-grpc-tls
[info] skip: swerver does not subscribe to stream-grpc
[info] skip: swerver does not subscribe to stream-grpc-tls
[info] skip: swerver does not subscribe to echo-ws
[info] skip: swerver 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/async-db-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2c-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2c-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2c-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h3-64.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/fortunes-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-16384.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-h2c-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-h2c-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-tls-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/limited-conn-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/limited-conn-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-6800.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-h2-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-h2-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-h3-64.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/upload-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/upload-32.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
[info] restoring loopback MTU to 65536

@MDA2AV MDA2AV merged commit aec72c8 into MDA2AV:main Jun 13, 2026
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