Need help with mqtt-benchmark?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

krylovsk
140 Stars 46 Forks Apache License 2.0 21 Commits 7 Opened issues

Description

Simple MQTT (broker) benchmarking tool

Services available

!
?

Need anything else?

Contributors list

# 214,684
git-cli...
Git
golang
git-ser...
8 commits
# 393,440
Go
Shell
mqtt
benchma...
4 commits
# 33,215
Go
webrtc-...
webrtc
golang
1 commit
# 273,788
Shell
HTML
Android
lora
1 commit

MQTT benchmarking tool

A simple MQTT (broker) benchmarking tool.

Installation:

go get github.com/krylovsk/mqtt-benchmark

The tool supports multiple concurrent clients, configurable message size, etc:

$ ./mqtt-benchmark -h
Usage of ./mqtt-benchmark:
  -broker string
        MQTT broker endpoint as scheme://host:port (default "tcp://localhost:1883")
  -client-cert string
        Path to client certificate in PEM format
  -client-key string
        Path to private clientKey in PEM format
  -client-prefix string
        MQTT client id prefix (suffixed with '-' (default "mqtt-benchmark")
  -clients int
        Number of clients to start (default 10)
  -count int
        Number of messages to send per client (default 100)
  -format string
        Output format: text|json (default "text")
  -password string
        MQTT client password (empty if auth disabled)
  -qos int
        QoS for published messages (default 1)
  -quiet
        Suppress logs while running
  -size int
        Size of the messages payload (bytes) (default 100)
  -topic string
        MQTT topic for outgoing messages (default "/test")
  -username string
        MQTT client username (empty if auth disabled)
  -wait int
        QoS 1 wait timeout in milliseconds (default 60000)

NOTE: if

count=1
or
clients=1
, the sample standard deviation will be returned as
0
(convention due to the lack of NaN support in JSON)

Two output formats supported: human-readable plain text and JSON.

Example use and output:

> mqtt-benchmark --broker tcp://broker.local:1883 --count 100 --size 100 --clients 100 --qos 2 --format text
....

======= CLIENT 27 ======= Ratio: 1 (100/100) Runtime (s): 16.396 Msg time min (ms): 9.466 Msg time max (ms): 1880.769 Msg time mean (ms): 150.193 Msg time std (ms): 201.884 Bandwidth (msg/sec): 6.099

========= TOTAL (100) ========= Total Ratio: 1 (10000/10000) Total Runime (sec): 16.398 Average Runtime (sec): 15.514 Msg time min (ms): 7.766 Msg time max (ms): 2034.076 Msg time mean mean (ms): 140.751 Msg time mean std (ms): 13.695 Average Bandwidth (msg/sec): 6.761 Total Bandwidth (msg/sec): 676.112

Similarly, in JSON:

> mqtt-benchmark --broker tcp://broker.local:1883 --count 100 --size 100 --clients 100 --qos 2 --format json --quiet
{
    runs: [
        ...
        {
            "id": 61,
            "successes": 100,
            "failures": 0,
            "run_time": 16.142762197,
            "msg_tim_min": 12.798859,
            "msg_time_max": 1273.9553740000001,
            "msg_time_mean": 147.66799521,
            "msg_time_std": 152.08244221156286,
            "msgs_per_sec": 6.194726700402251
        }
    ],
    "totals": {
        "successes": 10000,
        "failures": 0,
        "total_run_time": 16.153741746,
        "avg_run_time": 15.14702422494,
        "msg_time_min": 7.852086000000001,
        "msg_time_max": 1285.241845,
        "msg_time_mean_avg": 136.4360292677,
        "msg_time_mean_std": 12.816965054355633,
        "total_msgs_per_sec": 681.0374046459865,
        "avg_msgs_per_sec": 6.810374046459865
    }
}

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.