Skip to content

Performance ​

Titanium targets low-overhead reverse proxying and HTTPS interception: connection pooling, HTTP/2 multiplexing, and buffer reuse.

RPS is requests per second. gRPC bars are RPC/s (unary calls). Read within a chart (same OS), not Windows vs Linux as one number. Missing bars mean that peer cannot run that wire on that OS.

Practical reverse RPS (tiny requests) ​

Common reverse wires with tiny keep-alive GET (~56 B), plus WebSocket and unary gRPC — one chart per OS. How to read medals and workload shape: Performance wiki.

Windows ​

Practical reverse RPS on Windows (tiny requests)

Linux ​

Practical reverse RPS on Linux (tiny requests)

macOS ​

Practical reverse RPS on macOS (tiny requests)

Practical reverse RPS (64 KB) ​

Typical reverse wires with 64 KB GET/POST (plus 256 KB H1 terminate) — body work separate from the tiny-GET chart above.

Windows ​

Practical reverse RPS on Windows (64 KB)

Linux ​

Practical reverse RPS on Linux (64 KB)

macOS ​

Practical reverse RPS on macOS (64 KB)

Heavier reverse workloads ​

Larger bodies, POST, lossy links, TLS termination cost, and architecture-sensitive shapes (slow consumers, duplex, WebSocket H1 Upgrade). Full tables are on the Performance wiki.

Additional real-world tables (wiki only, not plotted here): Unary gRPC H2→h2c, WebSocket H1 TLS→H1 TLS, WebSocket RFC 8441.

Full measurements ​

Product 5×5 reverse/MITM matrices, saturation calibration, heavier reverse (bodies/POST/lossy/TLS/arch), unary gRPC (H2↔H2 and H2→h2c), and WebSocket (H1 Upgrade, dual-TLS H1, RFC 8441 H2) tables live on the Performance wiki. Profiling notes: Performance profiling.

Relay validation and throughput ​

The default ProxyProfile.Balanced keeps PolicyFamily.Http2RelayValidation = Disabled, so H2↔H2 compressed relay forwards HPACK blocks without a semantic decode pass. Switching to PublicFacing (or setting Enforce yourself) adds a full HPACK decode on that path — re-measure with your RPS load probe after enabling if relay throughput matters for your workload.


How we measure: GitHub Actions runners — Windows / Linux at ~4 vCPU / 16 GiB, macOS at macos-15 Apple Silicon (3-core / 7 GB). Products are compared within an OS, not across OSes. Titanium vs YARP, nginx, HAProxy, and Envoy; same client, origin, warmup, duration, and concurrency (sustain at 64). Absolute RPS varies slightly with runner noise.

Core, CLI, and website: MIT