genhttp-11-kestrel
Emerging · C# · engine: kestrel · tuned configuration
Lightweight, embeddable and modular C# web server.
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/1.1 | 12 of 97 | 646 |
| HTTP/2 | 14 of 29 | 72 |
| HTTP/3 | 4 of 12 | 81 |
| WebSocket | 10 of 32 | 94 |
Every result
Alpha Round, 37 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 |
|---|---|---|---|---|---|---|---|
| Connection | Baseline | 512 | 1,419,420 | 360us | 1.72ms | 5655.4% | 315MiB |
| Connection | Baseline | 4,096 | 1,479,005 | 2.35ms | 7.01ms | 5869.2% | 477MiB |
| Connection | Pipelined | 512 | 3,532,749 | 2.32ms | 6.83ms | 5638.7% | 252MiB |
| Connection | Pipelined | 4,096 | 3,236,033 | 16.64ms | 43.80ms | 6150.8% | 439MiB |
| Connection | Short-lived | 512 | 469,631 | 1.08ms | 11.70ms | 3368.3% | 215MiB |
| Connection | Short-lived | 4,096 | 481,713 | 1.41ms | 11.90ms | 3432.9% | 222MiB |
| Workload | JSON | 4,096 | 643,879 | 4.35ms | 23.40ms | 5868.0% | 608MiB |
| Workload | JSON Comp | 512 | 407,870 | 1.23ms | 6.25ms | 5583.3% | 312MiB |
| Workload | JSON Comp | 4,096 | 403,124 | 8.54ms | 30.10ms | 5881.9% | 606MiB |
| Workload | JSON Comp | 16,384 | 396,232 | 15.91ms | 47.90ms | 5829.9% | 755MiB |
| Workload | JSON TLS | 4,096 | 551,934 | 7.65ms | 116.02ms | 5945.1% | 921MiB |
| Workload | Upload | 32 | 1,325 | 24.22ms | 69.90ms | 5966.1% | 226MiB |
| Workload | Upload | 256 | 1,552 | 160.99ms | 756.80ms | 6406.4% | 390MiB |
| Workload | Static | 1,024 | 527,545 | 1.98ms | 19.17ms | 5703.3% | 355MiB |
| Workload | Static | 4,096 | 488,415 | 10.46ms | 838.28ms | 6185.4% | 625MiB |
| Workload | Static | 6,800 | 512,690 | 13.73ms | 472.31ms | 6157.7% | 813MiB |
| Workload | Static TLS | 1,024 | 336,798 | 3.13ms | 33.16ms | 5650.6% | 570MiB |
| Workload | Static TLS | 4,096 | 334,065 | 12.32ms | 167.79ms | 6197.1% | 955MiB |
| Workload | Static TLS | 6,800 | 351,794 | 19.17ms | 327.52ms | 6026.3% | 1.4GiB |
| Database | Async DB | 1,024 | 172,517 | 5.29ms | 18.20ms | 3715.3% | 484MiB |
| Database | CRUD | 4,096 | 474,363 | 7.99ms | 28.30ms | 4502.0% | 743MiB |
| Multi-endpoint | API-4 | 256 | 39,055 | 5.06ms | 12.10ms | 390.7% | 218MiB |
| Multi-endpoint | API-16 | 1,024 | 127,429 | 6.26ms | 17.00ms | 1530.0% | 337MiB |
| HTTP/2 | Baseline | 256 | 2,135,360 | 11.60ms | 99.01ms | 6037.1% | 966MiB |
| HTTP/2 | Baseline | 1,024 | 2,031,461 | 47.37ms | 212.71ms | 5913.7% | 2.6GiB |
| HTTP/2 | Static | 256 | 254,974 | 31.87ms | 207.20ms | 5814.8% | 2.3GiB |
| HTTP/2 | Static | 1,024 | 230,386 | 136.40ms | 666.97ms | 5328.6% | 7.4GiB |
| HTTP/3 | Baseline | 64 | 654,662 | 5.66ms | 18.82ms | 6104.9% | 1.3GiB |
| HTTP/3 | Static | 64 | 173,481 | 24.46ms | 105.40ms | 5865.3% | 1.9GiB |
| WebSocket | Echo | 512 | 1,693,291 | 301us | 1.55ms | 5681.0% | 236MiB |
| WebSocket | Echo | 4,096 | 1,690,562 | 2.02ms | 6.03ms | 5921.6% | 538MiB |
| WebSocket | Echo | 16,384 | 1,719,061 | 1.90ms | 5.87ms | 5880.3% | 684MiB |
| WebSocket | Echo Pipelined | 512 | 21,753,939 | 376us | 1.96ms | 5470.6% | 269MiB |
| WebSocket | Echo Pipelined | 4,096 | 21,931,049 | 1.59ms | 6.37ms | 5751.0% | 515MiB |
| WebSocket | Echo Pipelined | 16,384 | 21,157,952 | 3.59ms | 12.10ms | 5873.3% | 568MiB |
| WebSocket | Echo Short-lived | 512 | 433,788 | 73us | 287us | 3446.9% | 328MiB |
| WebSocket | Echo Short-lived | 4,096 | 434,620 | 69us | 228us | 3393.0% | 258MiB |
How the benchmark is run · The machine · Add or fix an entry