HttpArena
Frameworks

kestrel

Engine · C#

Kestrel with nothing above it: one RequestDelegate reads the path and answers, with no routing middleware, no MVC, no endpoint mapping and no model binding. aspnet-minimal measures ASP.NET Core as people write it, so the distance between the two rows is what the framework layer costs rather than what the server costs. :8080 is HTTP/1.1, :8082 cleartext HTTP/2 by prior knowledge, :8081 HTTP/1.1 over TLS, and :8443 serves HTTP/1.1 and HTTP/2 over TCP plus HTTP/3 over QUIC on the same port. Static files are read off the mounted directory per request, with the precompressed sibling served when Accept-Encoding allows.

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, less 2.5% for each of routing, middleware, request and response the entry does not do for you - its completeness factor, which the WebSocket and gRPC families do not carry. The field is this entry's own league: engines and reverse proxies are scored apart from frameworks. How it works.

FamilyRankComposite
HTTP/1.114 of 212131
HTTP/25 of 5459
HTTP/33 of 3217

Every result

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

CategoryProfileConnsReq/secAvgp99CPUMemory
ConnectionBaseline4,0961,320,7952.66ms8.10ms5589.3%392MiB
ConnectionPipelined4,0967,438,2517.63ms18.80ms5678.4%321MiB
ConnectionShort-lived4,096455,5081.65ms12.30ms3087.1%118MiB
ConcurrencyAsync Delay32,000942,33427.85ms58.70ms4582.5%1.5GiB
EfficiencyLatency-10K1,0249,942109.7us118.0us135.9%157MiB
EfficiencyLatency-1M1,024997,526501.1us4526.0us4940.5%181MiB
WorkloadJSON Comp4,096478,1766.88ms28.30ms5888.7%525MiB
WorkloadJSON Comp16,384462,17110.30ms34.30ms5974.0%590MiB
WorkloadJSON TLS4,096617,5706.88ms125.79ms5842.0%795MiB
Workload8Gbit51249,331142.2us188.0us857.2%221MiB
WorkloadStatic TLS1,024298,0093.50ms36.16ms5903.0%406MiB
HTTP/2Baseline2562,360,75410.25ms61.63ms6089.9%1.0GiB
HTTP/2Baseline1,0242,258,26145.76ms197.35ms5968.6%3.9GiB
HTTP/2Static256244,77933.04ms177.80ms6060.8%949MiB
HTTP/2Static1,024150,845207.57ms1.11s5760.5%3.3GiB
HTTP/2Baseline (h2c)2562,884,6389.02ms50.01ms6057.2%941MiB
HTTP/2Baseline (h2c)1,0242,763,35038.84ms261.65ms6097.1%4.2GiB
HTTP/2Baseline (h2c)4,0962,180,763133.61ms574.75ms5714.2%8.1GiB
HTTP/2JSON (h2c)1,024978,61131.29ms256.39ms6281.3%1.4GiB
HTTP/2JSON (h2c)4,096856,136120.63ms644.75ms5963.2%4.2GiB
HTTP/3Baseline64668,9975.67ms18.07ms6180.8%1.9GiB
HTTP/3Static6485,33538.38ms214.65ms5959.1%1.1GiB

Compared with

The C# entries around kestrel on the HTTP/1.1 composite, and the one leading them. The last column shows every profile side by side.

EntryCompositevs kestrel
genhttp-ioxide6118+187%head to head
aspnet-minimal2724+28%head to head
fastendpoints2669+25%head to head
sisk2055-4%head to head
cadente1731-19%head to head

Compare kestrel with any C# entry · Compare kestrel with any entry, in any language · Every C# entry, ranked

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