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: Point-to-Point

Point-to-point

Point-to-point pairs every publisher with its own subscriber on its own topic, so each message has exactly one recipient and the broker does no fan-out. It isolates the per-message cost of routing: latency is measured end to end, publisher to subscriber, and reported as an average per interval so that latency drifting upward over a run is visible rather than averaged away.

50,000 publisher/subscriber pairs, QoS 1, run at two publish rates: one and two messages per second per publisher, giving 50K and 100K messages/second in aggregate. Every broker sees an identical client and scenario; only the broker changes between runs.

Mosquitto is absent from these results because it could not complete the test. It fails to sustain rates above roughly 40K messages/second: its single event-loop thread saturates one core, and past that point the delivery backlog grows without bound rather than settling. Since it cannot hold the 50K rate for the duration of a run, there is no comparable figure to publish here. See the fan-in and fan-out pages for rates it does sustain.

This is not specific to our setup: EMQX's own published results for the same scenario record Mosquitto missing the target as well, settling at 37.3K messages/second against the 50K offered.

50.0K messages/second — 1 msg/s per publisher

ServerVersionQOSCPU LoadMessagesAchieved rateAvg latency
EMQX-11071%89,920,47949,955/s53.0ms
XMQ0.9.18-247% mean / 290% peak89,975,28849,986/s199us
FlashMQ1.27.1-204% mean / 268% peak89,974,17149,985/s193us
EMQX
XMQ
FlashMQ
Average latency per interval, by broker100us1.0ms10.0ms100.0ms0s360s720s1080s1440selapsed

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

Reading the results

  • XMQ and FlashMQ are close, at 199us and 193us. XMQ delivers a message on the thread that received it rather than handing it to a separate pool, and this run carries no persistence, bridge or cluster node, so it takes that path throughout; the cost is 247% of a core against FlashMQ's 204%.
  • EMQX is not re-verified this round. Its last measured figure, 5.8.9 at 53.0ms and 1071% CPU, is two orders of magnitude slower than XMQ's and predates an unrelated measurement anomaly found on a different scenario after upgrading to 6.3.1; it is held pending that review rather than replaced with an unchecked number.

The doubled-rate arm of this scenario (100K messages/second, two per publisher) is kept in the results file as history but is not part of the current chart.