Benchmarks
2026-10-06 — HTTP/3 evaluation (Docker Desktop / WSL2)
Same harness, host and caveats as the other reports (±15–20 % run-to-run noise).
scb-webd built with --features http3; oha 1.16 built with --features http3;
Caddy 2.6 (Debian bookworm) with protocols h1 h2 h3; nginx in bookworm has no QUIC.
64 connections, 10 s, 13-byte static file over TLS.
First run — a defect found
server scenario rps p50_ms p95_ms p99_ms peak_rss_mib
scb h3-static-small 31697 1.54 2.45 3.18 1126Peak memory grew to 1.1 GiB in 10 s: the per-connection JoinSet kept every completed
request task until the connection closed. Fixed by reaping finished tasks in the accept
loop (crates/scb-http/src/h3.rs).
After the fix
server scenario rps p50_ms p95_ms p99_ms peak_rss_mib
scb tls-h2-static-small 52952 1.17 2.02 2.51 19
scb h3-static-small 29939 1.59 3.00 4.64 25
caddy tls-h2-static-small 25506 1.99 6.43 9.81 50
caddy h3-static-small 5025 2.04 6.50 9.97 57- scb HTTP/3 ≈ 57 % of scb HTTP/2 (QUIC runs in user space with per-packet crypto; no GSO/GRO tuning yet) and ≈ 6× Caddy HTTP/3.
- Memory flat: a 4-minute soak with HTTP/3 among ten concurrent scenarios passed
(5.8 M requests, 0 errors, RSS 29.1 → 29.4 MiB;
bench/soak.shnow includesh3).
Verdict
HTTP/3 stays an opt-in build feature (ADR-0019): functionally complete for
request/response traffic and safe on memory, but built on h3 0.0.x and without
extended CONNECT, 0-RTT or UDP offload tuning.