All Projects → emqx → Emqtt Bench

emqx / Emqtt Bench

Licence: apache-2.0
Erlang MQTT v5.0 Benchmark Tool

Programming Languages

erlang
1774 projects

Labels

Projects that are alternatives of or similar to Emqtt Bench

Home Assistant EDP Box
Integração das EDP Box com Home Assistant Core
Stars: ✭ 91 (-69.36%)
Mutual labels:  mqtt
Rumqtt
Mqtt ecosystem in rust
Stars: ✭ 264 (-11.11%)
Mutual labels:  mqtt
Openremote
100% open-source IoT Platform - Integrate your assets, create rules, and visualize your data
Stars: ✭ 254 (-14.48%)
Mutual labels:  mqtt
espRFLinkMQTT
ESP8266 gateway between RFLink and MQTT server
Stars: ✭ 72 (-75.76%)
Mutual labels:  mqtt
Fuxa
Web-based Process Visualization (SCADA/HMI/Dashboard) software
Stars: ✭ 262 (-11.78%)
Mutual labels:  mqtt
Mqtt Jmeter
MQTT JMeter Plugin
Stars: ✭ 280 (-5.72%)
Mutual labels:  mqtt
meross pair
Android APP that allows pairing Meross Devices with third party MQTT brokers
Stars: ✭ 18 (-93.94%)
Mutual labels:  mqtt
Gmqtt
Gmqtt is a flexible, high-performance MQTT broker library that fully implements the MQTT protocol V3.1.1 and V5 in golang
Stars: ✭ 290 (-2.36%)
Mutual labels:  mqtt
Tuya Convert
A collection of scripts to flash Tuya IoT devices to alternative firmwares
Stars: ✭ 3,338 (+1023.91%)
Mutual labels:  mqtt
Streamsheets
An open-source tool for processing stream data using a spreadsheet-like interface.
Stars: ✭ 281 (-5.39%)
Mutual labels:  mqtt
ESPressIoT
This project covers somewhat advances features for an espresso machine controller.
Stars: ✭ 31 (-89.56%)
Mutual labels:  mqtt
Emitter
High performance, distributed and low latency publish-subscribe platform.
Stars: ✭ 3,130 (+953.87%)
Mutual labels:  mqtt
Dashboard
🌟 Create IoT applications. Wire devices together regardless their brand or technology.
Stars: ✭ 283 (-4.71%)
Mutual labels:  mqtt
ejyy
「e家宜业」是一整套开源智慧物业解决方案,基于nodejs、typescript、koa、vue开发,包含web中台、业主小程序、员工小程序、公众号、物联网应用等,涵盖业主服务、物业运营、智能物联、数据统计等主要业务。
Stars: ✭ 561 (+88.89%)
Mutual labels:  mqtt
Homekit2mqtt
HomeKit to MQTT bridge 🏡📱
Stars: ✭ 286 (-3.7%)
Mutual labels:  mqtt
luftdatenpumpe
Process live and historical data from luftdaten.info, IRCELINE and OpenAQ. Filter by station-id, sensor-id and sensor-type, apply reverse geocoding, store into timeseries and RDBMS databases, publish to MQTT, output as JSON or visualize in Grafana.
Stars: ✭ 22 (-92.59%)
Mutual labels:  mqtt
Kmansonoff
Firmware for ESP8266 based itead Sonoff switches for use with HomeAssistant / mqtt
Stars: ✭ 282 (-5.05%)
Mutual labels:  mqtt
Paho.mqtt.wxapp
接MQTT相关项目 paho.mqtt.wxapp可以让你在微信小程序里连接MQTT broker,实现在小程序里控制硬件,也可用于游戏,已测试的broker有mosquitto、emqtt、hivemq、百度物联网 MQTT QQ群:679985050
Stars: ✭ 295 (-0.67%)
Mutual labels:  mqtt
Libmqtt
MQTT v3.1.1/5.0 library in Go
Stars: ✭ 290 (-2.36%)
Mutual labels:  mqtt
Awesome Home Assistant
A curated list of amazingly awesome Home Assistant resources.
Stars: ✭ 3,487 (+1074.07%)
Mutual labels:  mqtt

Erlang MQTT Benchmark Tool

emqtt_bench is a simple MQTT v5.0 benchmark tool written in Erlang.

Requires Erlang/OTP R21.2+ to build.

Build first

make

Connect Benchmark

$ ./emqtt_bench conn --help
Usage: emqtt_bench conn [--help <help>] [-h [<host>]] [-p [<port>]]
                        [-c [<count>]] [-n [<startnumber>]]
                        [-i [<interval>]] [-u <username>] [-P <password>]
                        [-k [<keepalive>]] [-C [<clean>]] [-S [<ssl>]]
                        [--certfile <certfile>] [--keyfile <keyfile>]
                        [--ifaddr <ifaddr>] [--prefix <prefix>]

  --help             help information
  -h, --host         mqtt server hostname or IP address [default:
                     localhost]
  -p, --port         mqtt server port number [default: 1883]
  -V, --version      mqtt protocol version: 3 | 4 | 5 [default: 5]
  -c, --count        max count of clients [default: 200]
  -n, --startnumber  start number [default: 0]
  -i, --interval     interval of connecting to the broker [default: 10]
  -u, --username     username for connecting to server
  -P, --password     password for connecting to server
  -k, --keepalive    keep alive in seconds [default: 300]
  -C, --clean        clean session [default: true]
  -S, --ssl          ssl socoket for connecting to server [default: false]
  --certfile         client certificate for authentication, if required by
                     server
  --keyfile          client private key for authentication, if required by
                     server
  --ifaddr           local ipaddress or interface address
  --prefix           client id prefix

For example, create 50K concurrent connections at the arrival rate of 100/sec:

./emqtt_bench conn -c 50000 -i 10

Sub Benchmark

$ ./emqtt_bench sub --help
Usage: emqtt_bench sub [--help <help>] [-h [<host>]] [-p [<port>]]
                       [-V [<version>]] [-c [<count>]]
                       [-n [<startnumber>]] [-i [<interval>]]
                       [-t <topic>] [-q [<qos>]] [-u <username>]
                       [-P <password>] [-k [<keepalive>]] [-C [<clean>]]
                       [-S [<ssl>]] [--certfile <certfile>]
                       [--keyfile <keyfile>] [--ws [<ws>]]
                       [--ifaddr <ifaddr>] [--prefix <prefix>]

  --help             help information
  -h, --host         mqtt server hostname or IP address [default: localhost]
  -p, --port         mqtt server port number [default: 1883]
  -V, --version      mqtt protocol version: 3 | 4 | 5 [default: 5]
  -c, --count        max count of clients [default: 200]
  -n, --startnumber  start number [default: 0]
  -i, --interval     interval of connecting to the broker [default: 10]
  -t, --topic        topic subscribe, support %u, %c, %i variables
  -q, --qos          subscribe qos [default: 0]
  -u, --username     username for connecting to server
  -P, --password     password for connecting to server
  -k, --keepalive    keep alive in seconds [default: 300]
  -C, --clean        clean start [default: true]
  -S, --ssl          ssl socoket for connecting to server [default: false]
  --certfile         client certificate for authentication, if required by server
  --keyfile          client private key for authentication, if required by server
  --ws               websocket transport [default: false]
  --ifaddr           local ipaddress or interface address
  --prefix           client id prefix

For example, create 50K concurrent connections at the arrival rate of 100/sec:

./emqtt_bench sub -c 50000 -i 10 -t bench/%i -q 2

Pub Benchmark

$ ./emqtt_bench pub --help
Usage: emqtt_bench pub [--help <help>] [-h [<host>]] [-p [<port>]]
                       [-V [<version>]] [-c [<count>]]
                       [-n [<startnumber>]] [-i [<interval>]]
                       [-I [<interval_of_msg>]] [-u <username>]
                       [-P <password>] [-t <topic>] [-s [<size>]]
                       [-q [<qos>]] [-r [<retain>]] [-k [<keepalive>]]
                       [-C [<clean>]] [-S [<ssl>]]
                       [--certfile <certfile>] [--keyfile <keyfile>]
                       [--ws [<ws>]] [--ifaddr <ifaddr>] [--prefix <prefix>]

  --help                 help information
  -h, --host             mqtt server hostname or IP address [default: localhost]
  -p, --port             mqtt server port number [default: 1883]
  -V, --version          mqtt protocol version: 3 | 4 | 5 [default: 5]
  -c, --count            max count of clients [default: 200]
  -n, --startnumber      start number [default: 0]
  -i, --interval         interval of connecting to the broker [default: 10]
  -I, --interval_of_msg  interval of publishing message(ms) [default: 1000]
  -u, --username         username for connecting to server
  -P, --password         password for connecting to server
  -t, --topic            topic subscribe, support %u, %c, %i variables
  -s, --size             payload size [default: 256]
  -q, --qos              subscribe qos [default: 0]
  -r, --retain           retain message [default: false]
  -k, --keepalive        keep alive in seconds [default: 300]
  -C, --clean            clean start [default: true]
  -L, --limit            The max message count to publish, 0 means unlimited [default: 0]
  -S, --ssl              ssl socoket for connecting to server [default: false]
  --certfile             client certificate for authentication, if required by server
  --keyfile              client private key for authentication, if required by server
  --ws                   websocket transport [default: false]
  --ifaddr               local ipaddress or interface address
  --prefix               client id prefix

For example, create 100 connections and each publishes messages at the rate of 100 msg/sec.

./emqtt_bench pub -c 100 -I 10 -t bench/%i -s 256

Local interface

./emqtt_bench pub --ifaddr 192.168.1.10
./emqtt_bench sub --ifaddr 192.168.2.10

One-way SSL Socket

./emqtt_bench sub -c 100 -i 10 -t bench/%i -p 8883 -S
./emqtt_bench pub -c 100 -I 10 -t bench/%i -p 8883 -s 256 -S

Two-way SSL Socket

./emqtt_bench sub -c 100 -i 10 -t bench/%i -p 8883 --certfile path/to/client-cert.pem --keyfile path/to/client-key.pem
./emqtt_bench pub -c 100 -i 10 -t bench/%i -s 256 -p 8883 --certfile path/to/client-cert.pem --keyfile path/to/client-key.pem

Notice

You should not set '-c' option more than 60K for TCP ports limit on one interface.

Author

EMQ X Team.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].