Skip to content

[true-async] drop HTTP/3 listener#744

Draft
EdmondDantes wants to merge 2 commits into
MDA2AV:mainfrom
EdmondDantes:fix-h3-startup-v2
Draft

[true-async] drop HTTP/3 listener#744
EdmondDantes wants to merge 2 commits into
MDA2AV:mainfrom
EdmondDantes:fix-h3-startup-v2

Conversation

@EdmondDantes
Copy link
Copy Markdown
Contributor

The v0.6.3 benchmark run (after #742) skipped limited-conn for both 512c and 4096c:

=== true-async-server / limited-conn / 512c (tool=gcannon) ===
[info] waiting for server...
[warn] true-async-server did not come up for limited-conn; skipping

No result was recorded, so the leaderboard shows short-lived as not participating.

Cause

entry.php registered an HTTP/3 QUIC listener on UDP 8443. meta.json subscribes to no h3 profile, so that listener serves nothing — but its UDP bind is an extra startup step that races with the previous container's teardown on back-to-back profile runs, intermittently making HttpServer::start() fail before the health probe succeeds. baseline and pipelined (earlier in the run) came up; limited-conn (3rd) lost the race twice.

Fix

Drop the H3 listener and the dead H3_PORT / H3_DISABLE env plumbing. The arena image never benchmarks HTTP/3 — removing the listener eliminates the failure vector and trims startup work.

One-file change; branched off current main (post-#742).

…limited-conn

The v0.6.3 benchmark run skipped the short-lived (limited-conn) profile
with `[warn] true-async-server did not come up for limited-conn` for
both 512c and 4096c — the server container never passed the health
probe, so no result was recorded and the leaderboard shows short-lived
as "not participating".

entry.php registered an HTTP/3 QUIC listener on UDP 8443 whenever
H3_DISABLE != "1" (the benchmark runner never sets it). meta.json
subscribes to no h3 profile, so that listener serves nothing — but its
UDP bind is an extra startup step that races with the previous
container's teardown on back-to-back profile runs, intermittently
making HttpServer::start() fail before the probe succeeds. baseline and
pipelined (earlier in the run) came up; limited-conn (3rd) lost twice.

Remove the H3 listener and the dead H3_PORT / H3_DISABLE env plumbing.
The arena image never benchmarks HTTP/3.
@EdmondDantes
Copy link
Copy Markdown
Contributor Author

/benchmark -f true-async-server --save

@github-actions
Copy link
Copy Markdown
Contributor

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

@EdmondDantes EdmondDantes changed the title true-async-server: drop HTTP/3 listener — fixes short-lived "did not come up" [true-async] drop HTTP/3 listener May 19, 2026
@EdmondDantes EdmondDantes marked this pull request as draft May 19, 2026 22:09
@github-actions
Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: true-async-server | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 2,172,312 6606.9% 184MiB +3.5% +0.5%
baseline 4096 2,232,923 5689.7% 220MiB +1.0% ~0%
pipelined 512 8,522,868 6843.4% 148MiB +2.9% -2.0%
pipelined 4096 2,290,917 5977.7% 213MiB +3.3% ~0%
json-comp 4096 472,695 6242.3% 252MiB +1.6% -0.8%
json-comp 16384 457,029 6518.1% 488MiB +3.5% -0.8%
json-tls 4096 789,834 6217.1% 616MiB +0.5% -15.8%
upload 32 2,580 1859.3% 298MiB ~0% -5.7%
upload 256 3,034 3746.4% 574MiB -0.6% +15.5%
api-4 256 56,154 395.2% 44MiB -2.6% +2.3%
api-16 1024 153,505 1577.2% 78MiB ~0% ~0%
static 1024 596,048 3160.9% 175MiB -0.4% -0.6%
static 4096 624,257 3184.9% 249MiB -0.8% -0.8%
static 6800 603,951 3152.6% 320MiB -1.5% +0.3%
async-db 1024 246,370 4840.1% 248MiB -0.7% +0.8%
fortunes 1024 88,951 6336.1% 221MiB ~0% -0.5%
baseline-h2 256 5,116,675 7958.2% 224MiB +11.8% -1.3%
baseline-h2 1024 3,263,556 7192.9% 506MiB +8.4% +0.4%
static-h2 256 1,047,794 6557.9% 540MiB +1.7% -16.9%
static-h2 1024 820,972 6224.8% 2.4GiB +0.9% +20.0%
baseline-h2c 256 6,042,081 7119.3% 242MiB +5.8% -0.8%
baseline-h2c 1024 4,161,641 7336.2% 480MiB +4.6% ~0%
baseline-h2c 4096 3,796,821 6912.4% 1.4GiB +11.0% -12.5%
json-h2c 1024 1,238,210 7369.7% 312MiB +0.4% +7.6%
json-h2c 4096 1,206,688 7206.3% 780MiB ~0% +0.4%
Full log
time to 1st byte:     1.14ms     42.11ms     15.08ms      9.55ms    60.25%
req/s           :     742.29     2648.57     1222.16      332.59    73.83%
[info] CPU 7292.8% | Mem 327MiB

=== Best: 1238210 req/s (CPU: 7369.7%, Mem: 312MiB) ===
[info] saved results/json-h2c/1024/true-async-server.json
httparena-bench-true-async-server
httparena-bench-true-async-server

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

[run 1/3]
starting benchmark...
Application protocol: h2c
11Main benchmark duration is started for thread #Warm-up phase is over for thread #Warm-up phase is over for thread #32.

.9
.Main benchmark duration is started for thread #11.

38.
14Main benchmark duration is started for thread #42.
.
39Main benchmark duration is started for thread #56.
.
.Warm-up phase is over for thread #Main benchmark duration is started for thread #743..
.
1Main benchmark duration is started for thread #55.


52Main benchmark duration is started for thread #5.
.
.2
.Warm-up phase is over for thread #49.

.
2.
21.
20.
62.
Process Request Failure:2
Process Request Failure:2
Process Request Failure:2
38. Stopping all clients.
36. Stopping all clients.
. Stopping all clients.. Stopping all clients.

. Stopping all clients.
. Stopping all clients.6Stopped all clients for thread #

55Main benchmark duration is over for thread #12. Stopping all clients.
8Stopped all clients for thread #1
12Main benchmark duration is over for thread #Stopped all clients for thread #592

48. Stopping all clients.. Stopping all clients.

. Stopping all clients.

finished in 5.10s, 1214564.80 req/s, 4.00GB/s
requests: 6072827 total, 6203896 started, 6072827 done, 6072824 succeeded, 3 failed, 3 errored, 0 timeout
status codes: 6072826 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 20.00GB (21471822548) total, 11.63MB (12194804) headers (space savings 94.72%), 19.88GB (21350032490) data
                     min         max         mean         sd        +/- sd
time for request:      155us    439.56ms    107.91ms     29.37ms    86.61%
time for connect:       16us      6.66ms      2.40ms      1.85ms    57.84%
time to 1st byte:     9.38ms    443.89ms    156.31ms     70.55ms    75.49%
req/s           :     217.43     1526.41      296.94       44.15    72.09%
[info] CPU 6698.0% | Mem 702MiB

[run 2/3]
starting benchmark...
4.
18Main benchmark duration is started for thread #29.
.Warm-up phase is over for thread #
19.
.43Main benchmark duration is started for thread #39.

.
Application protocol: h2c
15.
21Main benchmark duration is started for thread #54.
2Warm-up phase is over for thread #.
31.
50..Warm-up phase is over for thread #

46.
56.Main benchmark duration is started for thread #7.

45.
37.
Process Request Failure:2
19
50. Stopping all clients.
. Stopping all clients.
54. Stopping all clients.
2. Stopping all clients.

11

finished in 5.08s, 1225995.20 req/s, 4.04GB/s
requests: 6129977 total, 6261048 started, 6129977 done, 6129976 succeeded, 1 failed, 1 errored, 0 timeout
status codes: 6129976 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 20.19GB (21675151084) total, 11.74MB (12309104) headers (space savings 94.72%), 20.07GB (21552227757) data
                     min         max         mean         sd        +/- sd
time for request:     1.40ms    427.24ms    104.95ms     28.37ms    87.76%
time for connect:       18us      9.16ms      2.77ms      2.01ms    57.74%
time to 1st byte:     3.31ms    425.93ms     85.33ms     59.80ms    79.57%
req/s           :     236.61      425.18      299.31       37.11    71.36%
[info] CPU 7206.3% | Mem 780MiB

[run 3/3]
starting benchmark...
37.
Application protocol: h2c

43.
28.Main benchmark duration is started for thread #48.
45Main benchmark duration is started for thread #28.

23.
30Main benchmark duration is started for thread #23.
.
.
47.Main benchmark duration is started for thread #34.

26.
11.
Process Request Failure:2

37. Stopping all clients.
. Stopping all clients.Main benchmark duration is over for thread #12. Stopping all clients.

14. Stopping all clients.
16
2542. Stopping all clients.

. Stopping all clients.Stopped all clients for thread #11


finished in 5.09s, 1226584.00 req/s, 4.04GB/s
requests: 6132921 total, 6263992 started, 6132921 done, 6132920 succeeded, 1 failed, 1 errored, 0 timeout
status codes: 6132920 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 20.20GB (21684650086) total, 11.74MB (12314992) headers (space savings 94.72%), 20.08GB (21561667879) data
                     min         max         mean         sd        +/- sd
time for request:     1.53ms    253.60ms    104.38ms     24.84ms    86.46%
time for connect:       17us      9.31ms      3.27ms      2.43ms    56.37%
time to 1st byte:     3.46ms    257.70ms     81.78ms     48.92ms    66.80%
req/s           :     192.92      447.76      299.39       30.49    69.02%
[info] CPU 6917.7% | Mem 810MiB

=== Best: 1206688 req/s (CPU: 7206.3%, Mem: 780MiB) ===
[info] saved results/json-h2c/4096/true-async-server.json
httparena-bench-true-async-server
httparena-bench-true-async-server
[info] skip: true-async-server does not subscribe to baseline-h3
[info] skip: true-async-server does not subscribe to static-h3
[info] skip: true-async-server does not subscribe to gateway-64
[info] skip: true-async-server does not subscribe to gateway-h3
[info] skip: true-async-server does not subscribe to production-stack
[info] skip: true-async-server does not subscribe to unary-grpc
[info] skip: true-async-server does not subscribe to unary-grpc-tls
[info] skip: true-async-server does not subscribe to stream-grpc
[info] skip: true-async-server does not subscribe to stream-grpc-tls
[info] skip: true-async-server does not subscribe to echo-ws
[info] skip: true-async-server 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/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/fortunes-1024.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-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/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
[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