Guide · RabbitMQ

RabbitMQ cluster sizing calculator for quorum queues and streams

Enter a message rate, a message size and the hours of data you must hold, and the calculator returns RAM, disk, cores and network per node for quorum queues or streams, with every step of the arithmetic beside the answer. It is a starting point to argue with, and the rules behind it are listed so you can change the ones that do not fit.

Scott Sternloff

By Scott Sternloff, Senior Enterprise Architect

LinkedIn · Updated · 11 min read · 10 sections

On this page
How the sizing is worked out

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

Queue type
Survive
Sustained, 95th percentile
95th percentile, body plus properties
Consumer outage to survive
Connections, channels, plugins

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 numbers

A 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.

Worked example: 1,000 msg/s, 4 KiB, 4 hours of backlog, quorum queues, 3 nodes
StepArithmeticResult
Backlog to hold1,000 msg/s x 3,600 s x 4 h14,400,000 messages
Data on each node14,400,000 x 4 KiB54.9 GiB
Queue metadata in memory14,400,000 x 32 bytes0.43 GiB
Write-ahead log reserve4 x 512 MiB2 GiB
Other memory (connections, channels, plugins)Your measured figure; 1 GiB in this example1 GiB
Memory in use0.43 + 2 + 13.43 GiB
RAM per node3.43 GiB / 0.6 watermark, rounded up, minimum 4 GiB6 GiB
Free-disk limitAbout the memory watermark: 0.6 x 6 GiB3.6 GiB
Disk per node54.9 GiB x 2 headroom + 3.6 GiB, minimum 50 GiB114 GiB
Cluster total disk3 nodes x 114 GiB342 GiB
Cores per node2 per 5,000 msg/s, minimum 44
Network per node link1,000 x 4,096 bytes x 110% x 8 bitsAt least 36 Mbit/s
Table · Worked example: 1,000 msg/s, 4 KiB, 4 hours of backlog, quorum queues, 3 nodes. Scroll sideways on small screens.

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.

Rules used by the calculator
RuleValue usedSource
Node count3 survives one failure, 5 survives two; always oddRabbitMQ production checklist and quorum queues guide
Quorum queue membersOne per node, so group size equals node count; the default is 3, set x-quorum-initial-group-size to 5 for a five-node clusterQuorum queues guide
Metadata per messageAt least 32 bytes in memory per message, so at least 1 MB per 30,000 messages, whatever the message sizeQuorum queues guide, resource use
Write-ahead log512 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 4Quorum queues guide, memory, WAL and segment files
Memory watermark0.6 by default; the docs recommend a 0.4 to 0.7 range and at least 30% of memory left to the OSProduction checklist and memory guide
Minimum node4 cores and 4 GiB of RAM for productionProduction checklist, minimum hardware
Free-disk limitThe recommended minimum is about the same as the memory watermark; the 50 MB default is for developmentProduction checklist and disk alarms guide
NetworkMessage rate x message size x 110% x 8 bits per second, using 95th percentile values; the docs call it intentionally oversimplifiedProduction checklist, minimum network throughput
StreamsA replica on every node, messages never held in memory, size set by retention (x-max-length-bytes or x-max-age)Streams guide
Disk headroom2 times the dataAceMQ planning practice. The docs say to overprovision disk but give no multiplier.
Disk floor50 GiB per nodeAceMQ planning practice, so the operating system, logs and growth are not squeezed on a small estimate.
CPU2 cores per 5,000 messages a second, minimum 4AceMQ planning practice. The docs give no per-message CPU figure: load-test before you buy.
Table · Rules used by the calculator. Scroll sideways on small screens.

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.

Node failures a quorum-queue cluster tolerates
NodesFailures toleratedPartition behaviour
10Not applicable: development only
20Not tolerant. Worse than one node for availability.
31Tolerant
41Tolerant only if a majority exists on one side
52Tolerant
73Tolerant, at the docs' recommended ceiling
Table · Node failures a quorum-queue cluster tolerates. Scroll sideways on small screens.

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.

Queues and streams compared for sizing (rabbitmq.com quorum queues, queues and streams guides, 4.4)
TypeReplicatedWhat it costsFits
Quorum queueYes: one replica per node in its group, default 3, odd sizes recommendedAt 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.
StreamYes: a replica on every node by defaultMessages 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 queueNo: replication was removed in 4.xNot replicated, so a node loss takes its data with it.Exclusive queues, which are always classic, and temporary queues for transient clients.
Table · Queues and streams compared for sizing (rabbitmq.com quorum queues, queues and streams guides, 4.4). Scroll sideways on small screens.

15-minute emergency SLA. Named senior engineers.

Contact Us

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.absolute from 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.

More resources

Other RabbitMQ guides, comparisons and research

Free Consultation

Get Expert Eyes on Your RabbitMQ Cluster

Whether you're troubleshooting a production incident, planning a migration, or want a second opinion on your architecture — our team is ready. No pitch, just answers.

Email Us