HttpArena
Frameworks

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.

FamilyRankComposite
HTTP/26 of 67

Every result

Alpha Round, 5 runs. Requests per second is the best of three; latency, CPU and memory come from that run.

CategoryProfileConnsReq/secAvgp99CPUMemory
HTTP/2Baseline (h2c)256955,81826.28ms321.57ms4954.0%16.8GiB
HTTP/2Baseline (h2c)1,0241,026,31291.01ms630.83ms4941.6%18.0GiB
HTTP/2Baseline (h2c)4,0961,011,355354.91ms1.04s4812.9%18.4GiB
HTTP/2JSON (h2c)1,024107,856282.82ms940.48ms4725.1%26.8GiB
HTTP/2JSON (h2c)4,09698,2101.12s2.28s4714.9%27.9GiB

How the benchmark is run · The machine · Add or fix an entry