XMQ
Credits:The XMQ web site is provided by Linotex.The XMQ and SPTK Windows installers are created with Advanced Installer free Open-Source license.
There were 0 unique visitors to this page

MQTT Performance Tests: Fan-Out

Fan-out

Fan-out is the few-to-many case, and the one that isolates delivery cost: a handful of publishers on a handful of topics, with a thousand subscribers on each. One received message becomes a thousand sends, so the inbound side is negligible and what is being measured is almost entirely the broker's delivery path.

5 publishers on 5 topics at 50 messages/second each — 250 messages/second inbound — and 1,000 subscribers each subscribed to all five topics, giving 250,000 messages/second delivered. QoS 1, 16-byte payload, 5 minutes. Only 1,005 connections are involved, so this is a throughput test rather than a connection-scale one. The scenario mirrors the Open MQTT Benchmark Suite's singlenode-fanout-5-1000-5-250K case; see the Test Environment page for hardware, tuning and method.

ServerVersionMessagesAchieved rateAvg latencyCPUPeak RAM
EMQX 5.8.95.8.974,989,957249,966/s4.0ms870% mean / 1557% peak430 Mb
Mosquitto 2.0.22-5build12.0.22-5build131,381,388104,604/s(below target)87s74% mean / 100% peak2.52 Gb
XMQ 0.9.180.9.1874,998,001249,993/s1.3ms347% mean / 367% peak52 Mb
FlashMQ 1.27.11.27.174,998,001249,993/s2.1ms547% mean / 555% peak28 Mb
EMQX 5.8.9
Mosquitto 2.0.22-5build1
XMQ 0.9.18
FlashMQ 1.27.1
Average latency per interval, by broker1.0ms10.0ms100.0ms1.0s10s100s1000s0s60s120s180s240selapsed

Latency uses a logarithmic axis: the brokers differ by several orders of magnitude in this scenario, and a linear axis would flatten the faster ones onto the baseline. Hover the chart for per-interval values.

Reading the results

  • XMQ is the fastest of the three measured this round at 1.29 ms, against FlashMQ's 2.06 ms and EMQX's 4.04 ms. All three hold the full 250,000 messages a second, so this is a comparison of latency and efficiency rather than of capacity.
  • XMQ runs unpinned, like the others: 347% of the 1600% available.
  • EMQX and Mosquitto are not re-verified this round. Their figures below - EMQX 5.8.9 at 4.04 ms, Mosquitto reaching 104,604/s of the 250,000 offered with latency growing linearly from 8.5 s to 165.9 s on its single event-loop thread — a ceiling that does not move with better hardware - predate an unrelated measurement anomaly found on EMQX 6.3.1 on a different scenario, and are held pending that review rather than replaced with unchecked new ones.
  • Memory is where the brokers separate most. XMQ and FlashMQ both peak under 60 MB, against EMQX's 430 MB and Mosquitto's 2.52 GB. Fan-out holds only 1,005 connections, so almost none of that is session state: it is what the delivery path buffers on the way through.
  • The load generator was never the limit. At 250,000 messages/second the client has to receive and timestamp every message, so it could plausibly have been the bottleneck rather than the broker. It peaked at 442% of the 1600% available — about 28% of the client machine — so these results measure the brokers.