Skip to content

[true-async] + drop H3 listener#743

Closed
EdmondDantes wants to merge 1 commit into
MDA2AV:mainfrom
EdmondDantes:fix-true-async-server-h3-startup
Closed

[true-async] + drop H3 listener#743
EdmondDantes wants to merge 1 commit into
MDA2AV:mainfrom
EdmondDantes:fix-true-async-server-h3-startup

Conversation

@EdmondDantes
Copy link
Copy Markdown
Contributor

@EdmondDantes EdmondDantes commented May 19, 2026

Supersedes #742 — same v0.6.3 / 0.7.0-beta.4 bump plus the fix for the missing short-lived result.

The short-lived gap

The v0.6.3 benchmark run 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

The server container never passed the health probe, so no result was recorded and 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 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.

…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 was registering 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.

Remove the H3 listener (and the now-dead H3_PORT / H3_DISABLE env
plumbing) outright. The arena image never benchmarks HTTP/3; dropping
the listener removes the failure vector and trims startup work.
@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.

@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.

@EdmondDantes EdmondDantes changed the title true-async-server: v0.6.3 / php-true-async 0.7.0-beta.4 + drop H3 listener [true-async] + drop H3 listener May 19, 2026
@EdmondDantes
Copy link
Copy Markdown
Contributor Author

Replaced by a branch based on current main (the previous branch had unrelated history after #742 merged — the /benchmark merge-check failed).

@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: true-async-server | Test: merge-check

Test Conn RPS CPU Mem Δ RPS Δ Mem
Full log
[info] available CPUs: 128
[info] framework: true-async-server (true-async-server, PHP)
[info] subscribed tests: baseline,pipelined,limited-conn,json,json-comp,json-tls,upload,api-4,api-16,static,static-h2,baseline-h2,baseline-h2c,json-h2c,async-db,fortunes
[info] building image: httparena-true-async-server
#0 building with "default" instance using docker driver

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

#2 [internal] load metadata for docker.io/trueasync/php-true-async:0.7.0-beta.4-php8.6
#2 DONE 0.9s

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

#4 [internal] load build context
#4 transferring context: 95B done
#4 DONE 0.0s

#5 [1/4] FROM docker.io/trueasync/php-true-async:0.7.0-beta.4-php8.6@sha256:3f1c4bafa622b12288edb5bfab2fd0085053a87d66adc87fdf05dbc8c04a86d6
#5 resolve docker.io/trueasync/php-true-async:0.7.0-beta.4-php8.6@sha256:3f1c4bafa622b12288edb5bfab2fd0085053a87d66adc87fdf05dbc8c04a86d6 0.0s done
#5 DONE 0.0s

#6 [2/4] RUN printf '%s\n'       'opcache.jit=1255'       'opcache.jit_buffer_size=128M'       'opcache.memory_consumption=256'       'opcache.max_accelerated_files=10000'       'opcache.validate_timestamps=0'       'memory_limit=1024M'     > /etc/php.d/99-arena.ini  && rm -f /etc/php.d/xdebug.ini
#6 CACHED

#7 [3/4] WORKDIR /app
#7 CACHED

#8 [4/4] COPY entry.php PostgreSQL.php SQLite.php /app/
#8 CACHED

#9 exporting to image
#9 exporting layers done
#9 exporting manifest sha256:82b3198860de64d27123d8021b1dd50542f431d6f95796b41e92b42e6e259241 done
#9 exporting config sha256:fbed891bc2cc635b4fb34f546f9f4ceca7d6e0dd687b7ddafa2f7ff858a79e56 done
#9 exporting attestation manifest sha256:aeb1866003ade91f8df975ab4abba17bd78e467501f5f5f2782ca1767c8f7d77
#9 exporting attestation manifest sha256:aeb1866003ade91f8df975ab4abba17bd78e467501f5f5f2782ca1767c8f7d77 0.0s done
#9 exporting manifest list sha256:a487b7a5a6f1924000b43bdd7bea811d5cc69cb9e958ab73cfb8245c0b634f7d 0.0s done
#9 naming to docker.io/library/httparena-true-async-server:latest done
#9 unpacking to docker.io/library/httparena-true-async-server:latest done
#9 DONE 0.1s
[info] tuning host for benchmark runs
[info] CPU governor → performance
[info] setting kernel socket limits
[info] setting UDP buffer sizes for QUIC
[info] setting loopback MTU to 1500 (realistic Ethernet)
[info] restarting docker daemon
[info] dropping kernel caches
[info] starting postgres sidecar
[info] postgres ready (seeded)
[warn] unknown profile: merge-check
[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/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