On this page
How the sizing is worked out
Per node, RAM is (queue metadata + write-ahead log reserve + other memory) divided by the 0.6 memory watermark, disk is the backlog times 2 plus the free-disk limit, and cores start at 4. With 1,000 messages a second of 4 KiB held for 4 hours on three nodes with quorum queues, that comes to 6 GiB of RAM, 114 GiB of disk and 4 cores per node. Three nodes survive one failure and five survive two. Checked against rabbitmq.com on 29 October 2026, RabbitMQ 4.4.
This page is the calculator and its arithmetic. For the long-form design reasoning, node placement and partition behaviour, read the RabbitMQ clustering and sizing guide.
The calculator
The calculator sizes one node and shows how it got there; every node in the cluster holds a full copy of the data, so the per-node figure applies to all of them. Use the 95th percentile for rate and message size, and set the hours to the consumer outage you want the cluster to ride out (quorum queues) or the retention window (streams).
It sizes the data path only. For node placement, partition behaviour and policies, see the clustering and sizing guide; for node counts with failure domains worked through, see cluster sizing for HA and DR.
RabbitMQ cluster sizing calculator
Per node, 3 nodes
6 GiB
RAM
114 GiB disk
4 cores
Network: at least 36 Mbit/s per node link (the production checklist formula).
Working
Backlog: 1,000 msg/s x 3,600 s x 4 h = 14,400,000 messages.
Data: 14,400,000 x 4 KiB = 54.9 GiB, and every node holds a full copy.
Memory: 0.43 GiB metadata (14,400,000 x 32 B) + 2 GiB write-ahead log (4 x 512 MiB) + 1 GiB other = 3.43 GiB.
RAM: 3.43 GiB / 0.6 memory watermark, rounded up, minimum 4 GiB = 6 GiB.
Disk: 54.9 GiB x 2 headroom + 3.6 GiB disk_free_limit (about the memory watermark), minimum 50 GiB = 114 GiB.
Cluster total disk: 3 x 114 GiB = 342 GiB.
Cores: 2 per 5,000 msg/s, minimum 4 = 4.
A starting point, not a capacity plan. It cannot see burst shape, queue count, connection count or consumer behaviour. Load-test before you buy hardware.
Have an engineer check your numbersA worked example, step by step
For 1,000 messages a second of 4 KiB held for 4 hours on a three-node cluster with quorum queues, each node needs 6 GiB of RAM, 114 GiB of disk and 4 cores. The table is what the calculator shows on first load; change an input and it recomputes the same steps.
| Step | Arithmetic | Result |
|---|---|---|
| Backlog to hold | 1,000 msg/s x 3,600 s x 4 h | 14,400,000 messages |
| Data on each node | 14,400,000 x 4 KiB | 54.9 GiB |
| Queue metadata in memory | 14,400,000 x 32 bytes | 0.43 GiB |
| Write-ahead log reserve | 4 x 512 MiB | 2 GiB |
| Other memory (connections, channels, plugins) | Your measured figure; 1 GiB in this example | 1 GiB |
| Memory in use | 0.43 + 2 + 1 | 3.43 GiB |
| RAM per node | 3.43 GiB / 0.6 watermark, rounded up, minimum 4 GiB | 6 GiB |
| Free-disk limit | About the memory watermark: 0.6 x 6 GiB | 3.6 GiB |
| Disk per node | 54.9 GiB x 2 headroom + 3.6 GiB, minimum 50 GiB | 114 GiB |
| Cluster total disk | 3 nodes x 114 GiB | 342 GiB |
| Cores per node | 2 per 5,000 msg/s, minimum 4 | 4 |
| Network per node link | 1,000 x 4,096 bytes x 110% x 8 bits | At least 36 Mbit/s |
Every rule behind the numbers, and where it comes from
Nine of the twelve rules are straight from the RabbitMQ documentation; three are AceMQ planning practice, marked as such, and you should change them if your own measurements disagree. The calculator does not hide a constant: each one below is the one in the arithmetic.
| Rule | Value used | Source |
|---|---|---|
| Node count | 3 survives one failure, 5 survives two; always odd | RabbitMQ production checklist and quorum queues guide |
| Quorum queue members | One per node, so group size equals node count; the default is 3, set x-quorum-initial-group-size to 5 for a five-node cluster | Quorum queues guide |
| Metadata per message | At least 32 bytes in memory per message, so at least 1 MB per 30,000 messages, whatever the message size | Quorum queues guide, resource use |
| Write-ahead log | 512 MiB default limit; the node needs at least 3 times that, and 4 times is the docs' starting point for high-throughput systems, so we use 4 | Quorum queues guide, memory, WAL and segment files |
| Memory watermark | 0.6 by default; the docs recommend a 0.4 to 0.7 range and at least 30% of memory left to the OS | Production checklist and memory guide |
| Minimum node | 4 cores and 4 GiB of RAM for production | Production checklist, minimum hardware |
| Free-disk limit | The recommended minimum is about the same as the memory watermark; the 50 MB default is for development | Production checklist and disk alarms guide |
| Network | Message rate x message size x 110% x 8 bits per second, using 95th percentile values; the docs call it intentionally oversimplified | Production checklist, minimum network throughput |
| Streams | A replica on every node, messages never held in memory, size set by retention (x-max-length-bytes or x-max-age) | Streams guide |
| Disk headroom | 2 times the data | AceMQ planning practice. The docs say to overprovision disk but give no multiplier. |
| Disk floor | 50 GiB per node | AceMQ planning practice, so the operating system, logs and growth are not squeezed on a small estimate. |
| CPU | 2 cores per 5,000 messages a second, minimum 4 | AceMQ planning practice. The docs give no per-message CPU figure: load-test before you buy. |
Three nodes or five: the failure arithmetic
Use three nodes to survive one failure and five to survive two, and do not go past five for quorum queues without a reason. A quorum queue needs more than half its members up, so the tolerated failures follow the table below. The docs note that quorum queue performance tails off quite a bit above five nodes and that they do not recommend quorum queues on more than seven nodes, and that clusters of double-digit node counts should usually become separate clusters.
Streams are quorum systems too, with a replica on each node by default, so the same odd-number rule holds. On the current series the metadata store and quorum queues are both Raft-based, so the old pause_minority advice from the mirrored-queue era no longer applies; the failure patterns guide covers partitions on 4.x.
| Nodes | Failures tolerated | Partition behaviour |
|---|---|---|
| 1 | 0 | Not applicable: development only |
| 2 | 0 | Not tolerant. Worse than one node for availability. |
| 3 | 1 | Tolerant |
| 4 | 1 | Tolerant only if a majority exists on one side |
| 5 | 2 | Tolerant |
| 7 | 3 | Tolerant, at the docs' recommended ceiling |
Queue types: what each one costs in a sized cluster
The calculator sizes the two replicated types, quorum queues and streams, because those are the ones that need a cluster to be safe. Classic mirrored queues no longer exist: classic queue mirroring was removed in RabbitMQ 4.0, so a cluster that relied on mirroring is sized as quorum queues or streams.
Use cases that need high availability use a replicated queue, meaning a quorum queue or a stream. You configure the type per queue with the x-queue-type argument at declaration, or set default_queue_type for a node or virtual host, and it cannot be changed afterwards. Exchanges only route messages and hold none, so they add nothing to the data-path figures; the queues and streams they feed do, and the RabbitMQ stream type suits the use cases where many consumers need to read the same long retention window.
| Type | Replicated | What it costs | Fits |
|---|---|---|---|
| Quorum queue | Yes: one replica per node in its group, default 3, odd sizes recommended | At least 32 bytes of memory per message, the write-ahead log reserve and a full copy on disk per member. Designed to trade latency for throughput. | Long-lived, critical queues such as incoming orders. Poor fit for temporary or exclusive queues, high queue churn, RPC reply queues and backlogs of 5 million messages or more. |
| Stream | Yes: a replica on every node by default | Messages are not held in memory, so disk follows the retention you set. | Large fan-outs and long backlogs, and workloads that push past what a single queue can do. |
| Classic queue | No: replication was removed in 4.x | Not replicated, so a node loss takes its data with it. | Exclusive queues, which are always classic, and temporary queues for transient clients. |
Broker restart, consumers and prefetch: what the sizing assumes
A quorum queue is designed for data safety: a confirmed message should not be lost as long as a majority of the nodes hosting the queue stay available. A few behaviours around restarts and consumers decide whether the sized cluster rides out a bad hour.
- Broker restart. A follower that fails or restarts resumes log replication where it left off, with no special catch-up process. During a broker restart on a three-node cluster the queue has no failure tolerance left, so restart one node at a time and in a quiet period.
- Acknowledgements. Use publisher confirms, and have consumers consume with manual acknowledgements. Messages not yet confirmed to the publisher have no safety guarantee.
- Prefetch. Quorum queues need a per-consumer prefetch, because global QoS prefetch is not supported. Too low a value starves consumers; values in the thousands can overload them. This is the setting that decides how much a consumer holds unacknowledged when it reconnects.
- Redelivery. Unacknowledged messages return to the queue when a consumer drops. Since 4.0 a quorum queue's delivery limit defaults to 20, after which a message is dropped or dead-lettered, so a poison message does not cycle forever.
- Several queues, not one. A single queue handles a bounded rate, so one busy queue will not use all the cores you sized. Spread a high publishing rate over multiple queues, and review the topology if you expect more than about 5,000 quorum queues.
- Features that carry over. Single active consumer, dead lettering, and from 4.3 strict priorities with 32 levels all work on quorum queues. Both AMQP 0-9-1 and AMQP 1.0 clients can use them.
Across regions: more clusters, not a bigger one
The calculator sizes one cluster in one site. If the data must live in two regions, do not stretch a replicated queue across them: size a cluster per region and move messages between them with federation or a shovel, which tolerate a slow or intermittent link. The operating rules for those links are in the federation and shovel runbook.
Metrics to watch once the cluster is running
Check the sized figures against what the cluster does under load. The management UI and HTTP API show queue length (messages ready for delivery), ingress and egress rates, consumer counts and ready against unacknowledged messages per queue, and rabbitmqctl list_queues gives the basic figures from the command line. Compare the busiest-hour queue length with the backlog you sized for, and treat a memory or disk alarm as a sign the model is wrong for your workload, not as a threshold to raise.
What the calculator does not model
It does not size connections, queue counts, bursts, TLS or classic queues, and each of those can move the answer more than the averages do. Add what you can measure:
- Classic queues. They are not replicated, so a node loss takes their data with it; use quorum queues or streams for anything you cannot lose. The classic queue guide describes a bounded in-memory window, but its real cost depends on queue count, which the calculator does not ask for.
- Connections and file handles. The production checklist's rule is 2 times the 95th percentile of concurrent connections plus the number of queues, with at least 50,000 file descriptors for the RabbitMQ user. Measure the memory these use and enter it as other memory.
- Bursts. The calculator takes a sustained rate. A burst is absorbed by the backlog figure only if consumers catch up afterwards, so check how long they take.
- TLS and CPU. The production checklist notes TLS can have a significant impact on CPU use. The core count here is a floor, not a forecast.
- Containers. The memory guide recommends an absolute watermark under Kubernetes, because a node cannot always detect the effective cgroup limit. Set
vm_memory_high_watermark.absolutefrom the RAM figure above.
In our reviews we size to the backlog a consumer outage produces, not to steady state, because steady state is not what fills a disk.
After the number: check it against your workload
Treat the output as the number you bring to a design review, and have it checked against your queue count, message shapes and consumer behaviour before you buy hardware. Send your rate, message profile and retention requirement to an AceMQ engineer, who will tell you where the model is wrong for your workload, including when you need less than it suggests. Enquiries to AceMQ get a reply within 1 hour through RabbitMQ implementation, and the RabbitMQ health check reviews a running cluster against these same rules.
Frequently asked questions
How many nodes does a RabbitMQ cluster need?
Three to survive one node failure, five to survive two, always an odd number so a majority can be identified. A single node is for development and test. The RabbitMQ docs note that quorum queue performance tails off quite a bit above five nodes and that clusters in the double digits are better split into separate clusters.
How much RAM does a RabbitMQ node need?
At least 4 GiB and 4 cores for production, per the RabbitMQ production checklist, and more as queue metadata and the write-ahead log grow. For quorum queues, add 32 bytes per queued message and a write-ahead log reserve of 3 to 4 times its 512 MiB limit, then divide by the 0.6 default memory watermark so publishers are not blocked in normal operation.
How much disk does a quorum queue cluster need?
Enough to hold the backlog you want to survive on every node, because each quorum queue member keeps a full copy, plus headroom and a free-disk limit about equal to the memory watermark. The docs say to overprovision disk but give no multiplier; AceMQ plans on twice the data. Total cluster disk is the per-node figure times the node count.
Does adding nodes make RabbitMQ faster?
Not for replicated queues. The docs say the more replicas a stream or quorum queue has, the lower its throughput generally is, because more work is needed to replicate and agree. More nodes help with more concurrent client connections, and past the double digits the advice is to run separate clusters.
Should I change the 0.6 memory watermark?
Rarely. The docs call 0.6 a safe default, recommend staying within 0.4 to 0.7, and require at least 30% of memory to stay free for the operating system. Under Kubernetes, set an absolute limit from the RAM you sized instead of a relative one.
Are classic mirrored queues still an option in RabbitMQ 4.x?
No. Classic queue mirroring was removed in RabbitMQ 4.0. Replicated queues are quorum queues or streams, so a cluster that used mirrored classic queues on 3.13 is sized as quorum queues. Classic queues remain, unreplicated, for exclusive and temporary queues.
What happens to a quorum queue when a broker restarts?
A follower that fails or restarts resumes log replication at the point it left off, with no special catch-up process. A three-member queue tolerates one node down, so the cluster has no spare failure tolerance until the node is back. Restart nodes one at a time.