sanic
Flagship · Python · tuned configuration
Sanic 25.3 on its own server with uvloop and httptools, one worker per core through the Sanic worker manager. Routing through the Sanic router, JSON through the ujson response, streamed uploads. Sanic ships no compression middleware, so gzip is hand-rolled in a response middleware, hence tuned.
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 | 69 of 97 | 161 |
Every result
Alpha Round, 12 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 | 593,133 | 862us | 1.79ms | 6526.5% | 1.6GiB |
| Connection | Baseline | 4,096 | 611,737 | 5.10ms | 6.42ms | 6380.3% | 1.6GiB |
| Connection | Pipelined | 512 | 1,461,670 | 5.34ms | 11.00ms | 6431.0% | 1.6GiB |
| Connection | Pipelined | 4,096 | 1,372,143 | 28.00ms | 50.70ms | 6346.4% | 1.6GiB |
| Connection | Short-lived | 512 | 509,963 | 994us | 2.12ms | 6555.9% | 1.6GiB |
| Connection | Short-lived | 4,096 | 523,366 | 2.13ms | 5.10ms | 6391.0% | 1.6GiB |
| Workload | JSON | 4,096 | 344,340 | 5.49ms | 16.00ms | 6325.5% | 1.6GiB |
| Workload | JSON Comp | 512 | 172,278 | 2.97ms | 6.84ms | 6457.6% | 1.6GiB |
| Workload | JSON Comp | 4,096 | 172,836 | 12.26ms | 33.20ms | 6368.1% | 1.6GiB |
| Workload | JSON Comp | 16,384 | 169,305 | 20.02ms | 95.10ms | 6065.9% | 1.7GiB |
| Workload | Upload | 32 | 1,814 | 17.57ms | 80.40ms | 2657.3% | 1.6GiB |
| Workload | Upload | 256 | 1,244 | 197.43ms | 1.07s | 6234.2% | 1.8GiB |
How the benchmark is run · The machine · Add or fix an entry