actix
Flagship · Rust · standard configuration
Actix-web 4 with rustls for TLS. Standard configuration: actix-files serves static content from disk per request via try_compressed(), which selects a pre-compressed .br/.gz sibling by Accept-Encoding through the framework API (no hand-rolled suffix lookup); the Compress middleware compresses dynamic responses (json-comp) on-the-fly. deadpool-postgres for async DB pooling (sized from DATABASE_MAX_CONN); crud reads go through an in-memory cache-aside (X-Cache MISS/HIT, invalidated on update — no Redis required). json-tls is served over HTTP/1.1-with-TLS on :8081; baseline-h2/static-h2 over h2 on :8443. serde_json per request. Pinned to actix git main for try_compressed() (unreleased in actix-files 0.6.10). Compiled with -O3 and thin LTO.
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 | 2 of 71 | 710 |
| HTTP/2 | 2 of 16 | 223 |
| WebSocket | 5 of 20 | 146 |
Every result
Alpha Round, 38 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 | 2,713,517 | 188us | 284us | 6656.4% | 85MiB |
| Connection | Baseline | 4,096 | 2,775,120 | 1.37ms | 2.56ms | 6675.4% | 154MiB |
| Connection | Pipelined | 512 | 16,342,080 | 500us | 546us | 6727.6% | 67MiB |
| Connection | Pipelined | 4,096 | 16,338,425 | 3.69ms | 5.31ms | 6656.8% | 196MiB |
| Connection | Short-lived | 512 | 1,121,546 | 447us | 4.06ms | 4775.9% | 71MiB |
| Connection | Short-lived | 4,096 | 1,135,157 | 1.17ms | 9.25ms | 4577.8% | 72MiB |
| Workload | JSON | 4,096 | 1,216,437 | 2.55ms | 13.10ms | 6523.9% | 297MiB |
| Workload | JSON Comp | 512 | 18,906 | 27.10ms | 42.10ms | 406.5% | 110MiB |
| Workload | JSON Comp | 4,096 | 152,609 | 24.94ms | 45.90ms | 3762.3% | 309MiB |
| Workload | JSON Comp | 16,384 | 248,051 | 55.67ms | 202.00ms | 6028.5% | 1.2GiB |
| Workload | JSON TLS | 4,096 | 1,157,219 | 3.56ms | 64.52ms | 6580.5% | 229MiB |
| Workload | Upload | 32 | 3,100 | 10.28ms | 33.10ms | 2010.8% | 159MiB |
| Workload | Upload | 256 | 3,062 | 77.31ms | 289.60ms | 3231.4% | 308MiB |
| Workload | Static | 1,024 | 56,896 | 21.84ms | 568.85ms | 6221.9% | 4.7GiB |
| Workload | Static | 4,096 | 41,434 | 109.48ms | 1.04s | 6020.3% | 6.3GiB |
| Workload | Static | 6,800 | 45,482 | 153.08ms | 1.10s | 5767.2% | 9.8GiB |
| Workload | Static TLS | 1,024 | 55,882 | 22.16ms | 493.97ms | 6220.4% | 4.6GiB |
| Workload | Static TLS | 4,096 | 41,672 | 120.61ms | 1.77s | 5858.6% | 6.2GiB |
| Workload | Static TLS | 6,800 | 47,327 | 159.17ms | 1.66s | 5505.0% | 11.0GiB |
| Database | Async DB | 1,024 | 149,386 | 6.48ms | 11.00ms | 4015.0% | 125MiB |
| Database | CRUD | 4,096 | 375,919 | 10.20ms | 71.30ms | 2440.1% | 251MiB |
| Multi-endpoint | API-4 | 256 | 31,654 | 7.26ms | 32.30ms | 396.3% | 45MiB |
| Multi-endpoint | API-16 | 1,024 | 120,151 | 7.52ms | 33.50ms | 1584.9% | 106MiB |
| HTTP/2 | Baseline | 256 | 3,884,214 | 6.47ms | 17.98ms | 6348.5% | 173MiB |
| HTTP/2 | Baseline | 1,024 | 3,056,936 | 31.25ms | 95.31ms | 6287.4% | 592MiB |
| HTTP/2 | Static | 256 | 51,989 | 155.69ms | 1.58s | 5764.2% | 11.2GiB |
| HTTP/2 | Static | 1,024 | 64,019 | 514.33ms | 2.64s | 5068.6% | 37.0GiB |
| HTTP/2 | Baseline (h2c) | 256 | 5,918,827 | 4.12ms | 4.12ms | 6453.4% | 150MiB |
| HTTP/2 | Baseline (h2c) | 1,024 | 4,282,445 | 23.22ms | 23.22ms | 6451.7% | 496MiB |
| HTTP/2 | Baseline (h2c) | 4,096 | 3,597,318 | 101.66ms | 101.66ms | 6437.1% | 1.9GiB |
| HTTP/2 | JSON (h2c) | 1,024 | 1,207,456 | 26.87ms | 26.87ms | 5364.2% | 281MiB |
| HTTP/2 | JSON (h2c) | 4,096 | 1,213,875 | 99.60ms | 99.60ms | 6376.2% | 1011MiB |
| WebSocket | Echo | 512 | 3,341,436 | 152us | 399us | 6371.0% | 51MiB |
| WebSocket | Echo | 4,096 | 3,409,380 | 1.03ms | 2.02ms | 6233.3% | 201MiB |
| WebSocket | Echo | 16,384 | 3,245,865 | 2.33ms | 4.48ms | 6062.1% | 485MiB |
| WebSocket | Echo Pipelined | 512 | 43,725,228 | 186us | 307us | 6751.9% | 58MiB |
| WebSocket | Echo Pipelined | 4,096 | 43,075,564 | 1.29ms | 1.82ms | 6392.9% | 212MiB |
| WebSocket | Echo Pipelined | 16,384 | 37,668,525 | 3.30ms | 7.78ms | 5797.9% | 544MiB |
How the benchmark is run · The machine · Add or fix an entry