vanilla-h2c
Engine · V · engine: epoll
HTTP/2 cleartext (h2c, prior-knowledge) on vanilla's conn-mode seam: one epoll engine drives the RFC 9113 state machine behind a ConnHandler. The client's PRI * HTTP/2.0 preface parses as an ordinary request; the HTTP handler flips the connection over (core.queue_takeover), appends the server SETTINGS preface, and every later burst is fed to the http2 machine instead of the HTTP/1.1 parser. The http2 module is a self-contained RFC 9113/7541 codec: HPACK (static + dynamic table, canonical Huffman decode, decoded-block ceiling), frame codec, and a stream state machine with send-side flow control, hardened against a live h2spec CI gate. Requests surface only when COMPLETE (END_STREAM); responses are HPACK-encoded HEADERS + DATA. The :8082 listener is h2c-only — a plain HTTP/1.1 request is refused 505, never a 200, so the benchmark cannot silently measure h1 throughput. /json reuses the vanilla /json shape (same dataset, precomputed per-item prefixes, total = price*quantity*m). Multi-threaded, SO_REUSEPORT, lock-free, -gc none. Pinned V 0.5.2 (prebuilt from source).
Composite rank
Each profile of a family is worth 100 to the entry that leads it, and the composite is the sum over the family. The field is this entry's own league: engines and reverse proxies are scored apart from frameworks. How it works.
| Family | Rank | Composite |
|---|---|---|
| HTTP/2 | 6 of 6 | 7 |
Every result
Alpha Round, 5 runs. Requests per second is the best of three; latency, CPU and memory come from that run.
| Category | Profile | Conns | Req/sec | Avg | p99 | CPU | Memory |
|---|---|---|---|---|---|---|---|
| HTTP/2 | Baseline (h2c) | 256 | 955,818 | 26.28ms | 321.57ms | 4954.0% | 16.8GiB |
| HTTP/2 | Baseline (h2c) | 1,024 | 1,026,312 | 91.01ms | 630.83ms | 4941.6% | 18.0GiB |
| HTTP/2 | Baseline (h2c) | 4,096 | 1,011,355 | 354.91ms | 1.04s | 4812.9% | 18.4GiB |
| HTTP/2 | JSON (h2c) | 1,024 | 107,856 | 282.82ms | 940.48ms | 4725.1% | 26.8GiB |
| HTTP/2 | JSON (h2c) | 4,096 | 98,210 | 1.12s | 2.28s | 4714.9% | 27.9GiB |
How the benchmark is run · The machine · Add or fix an entry