Measured, reproducible, on real hardware.
Every number here comes from a real run on a 32 vCPU / 62 GiB host with PostgreSQL at
the strictest durability tier (synchronous_commit=on), a fresh database per
test, and all raw data published in the repo. The current engine is Queen
0.16 (the pushser architecture); below are its headline benchmarks plus
the archived earlier runs.
Queen 0.16: current results
The pushser rework is built for sustained, balanced load. In a full-day soak it held ~119k msg/s of push and pop for 24 hours, 10.4 billion messages, zero push errors, and flat ~400 MiB broker memory (the long-run stability the older architecture lacked). Re-running the April matrix on the same hardware, it's faster on 10 of 11 cells (1.3-3.0×) and, crucially, keeps throughput flat as partitions scale to 10,000 where 0.14 declined. And when a realistic application is deliberately over-provisioned on push (2× consumer-group fan-out driven past the consume ceiling for an hour) it degrades gracefully: producers never block, nothing is lost or reordered, and the backlog stays bounded and self-draining.
24 hours · 10.4 billion messages
~119k msg/s sustained Balanced push + pop for a full day, zero loss, flat broker memory. Includes the live dashboard at the 24h mark.Same suite, new engine
10 / 11 cells faster Batch sizing, partition scaling to 10k, and consumer-group fan-out vs the 0.14 baseline on identical hardware.Over-provisioned push: what happens when producers outrun consumers
0 lost · 0 errors · 1h, 43.2M msgs, 2× fan-out A realistic app (fan-out, explicit ack, 20 ms handlers, failures + DLQ, transactional pipeline) driven above the consume ceiling for an hour. Producers never block, order holds, and the backlog stays bounded and self-draining. Graceful degradation, not breakage.All benchmarks at a glance
| Version | When | Headline | Reports |
|---|---|---|---|
| 0.16 pushser |
Jun 2026 | 24h soak: 10.4B msgs at ~119k/s, zero loss, flat memory · matrix 1.3-3.0× vs 0.14, flat partition scaling · over-provisioned-push lag test: 0 loss, bounded self-draining backlog | soak · matrix · lag |
| 0.14 0.14.0.alpha.3 |
Apr 2026 | 18 tests, 1.6B events, zero loss · 104k peak · head-to-head vs Kafka 3.7 & RabbitMQ 3.12 · 0.14-vs-0.12 | archive |
Older benchmarks
The original suite + Kafka / RabbitMQ
18 tests across throughput, latency, partition scaling, fan-out, multi-tenancy and a realistic pipeline, plus a direct head-to-head against Kafka 3.7 and RabbitMQ 3.12 on the same hardware, and a 0.14-vs-0.12 comparison.
How much Postgres do I need?
An interactive calculator turning your target msg/s into a PostgreSQL vCPU budget, derived directly from these benchmarks.
How we benchmark
- Real hardware. 32 vCPU / 62 GiB hosts (DigitalOcean), no swap, PostgreSQL with production-like tuning (
shared_buffers=24 GB). - Strict durability.
synchronous_commit=on, WAL fsynced before a push is acknowledged. The strictest tier of the systems we compare against. - Fresh state. Every matrix cell starts from an empty database; the soak runs one continuous fresh run.
- Published raw data. Loader/monitor logs, per-cell stats, database snapshots and the chart builders all live in
benchmark-queen/so you can reproduce or audit any number.
