0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

人気オンライン公開 MQTT ブローカー評価

Last updated at Posted at 2025-01-22

人気のオンライン公開 MQTT ブローカー評価

多くの MQTT プロジェクトや IoT サービスでは、オンライン公開 MQTT ブローカーを提供しており、ユーザーはこれを利用して MQTT の学習、テスト、プロトタイプ作成、さらには小規模なアプリケーションを迅速かつ効率的に行うことができます。これにより、時間と労力を節約できます。

しかし、ブローカーの場所、ネットワーク環境、サーバーの負荷により、それぞれの公開ブローカーの安定性やメッセージ送信の遅延が異なる場合があります。また、ほとんどのサービスプロバイダーは無料サービスの安定性やセキュリティについて責任を負わないと明記しているため、利用時にはこれらの要因を考慮する必要があります。

この記事では、いくつかの人気のある無料オンライン MQTT ブローカーを整理し、アクセス性、ネットワーク遅延、小規模性能テスト、メッセージ送信遅延の観点から評価・比較しました。選択の参考になれば幸いです。


テスト対象

以下は本記事でテストした主な MQTT 公開ブローカーです:

名前 ブローカーアドレス TCP TLS WebSocket
EMQX (グローバル) broker.emqx.io 1883 8883 8083,8084
EMQX (CN) broker-cn.emqx.io 1883 8883 8083,8084
Eclipse mqtt.eclipseprojects.io 1883 8883 80, 443
Mosquitto test.mosquitto.org 1883 8883, 8884 80, 443
HiveMQ broker.hivemq.com 1883 N/A 8000

EMQX

EMQX Cloud が提供する無料オンライン MQTT 5 ブローカー です。グローバル(AWS 米国オレゴン)と中国(Tencent Cloud 上海)の 2 つのアクセスポイントがあり、それぞれ 2 ノードで構成されています。必要に応じてノードを自動的に増設することも可能です。

注: グローバルと中国のアクセスポイント間で通信は行われません。

関連リンク:無料公開 MQTT 5 ブローカー


Eclipse

Eclipse IoT が提供する無料オンライン MQTT ブローカーです。IP 解析によると、Azure(米国バージニア)にデプロイされています。以前のアクセスアドレス mqtt.eclipse.org から mqtt.eclipseprojects.io に変更されました。


Mosquitto

Mosquitto コミュニティによる無料の MQTT ブローカーで、フランス(OVH ルーベ地域)にデプロイされています。ネットワーク遅延はやや高いものの、パケットロス率は低くなっています。


HiveMQ

HiveMQ が提供する無料 MQTT ブローカーで、AWS(ドイツ・フランクフルト)にデプロイされています。


テスト環境

  • ネットワーク: AWS 米国オレゴン
  • オペレーティングシステム: macOS 10.15.7

アクセス性テスト

以下は、すべてのブローカーに TCP ポート 1883 経由で接続可能であることを確認した結果です。

名前 ブローカーアドレス TCP アクセス可能
EMQX broker.emqx.io 1883 YES
EMQX (CN) broker-cn.emqx.io 1883 YES
Eclipse mqtt.eclipseprojects.io 1883 YES
Mosquitto test.mosquitto.org 1883 YES
HiveMQ broker.hivemq.com 1883 YES

テストデータとコード

テストには、以下の MQTT ツールとスクリプトを使用しました:

以下は、テストに使用したコードサンプルです:

# EMQX
./emqtt_bench sub -t t/1 -c 1 -h broker.emqx.io
./emqtt_bench pub -t t/1 -c 1 -h broker.emqx.io -I 1

# Eclipse
./emqtt_bench sub -t t/1 -c 1 -h mqtt.eclipseprojects.io
./emqtt_bench pub -t t/1 -c 1 -h mqtt.eclipseprojects.io -I 1

# Mosquitto
./emqtt_bench sub -t t/1 -c 1 -h test.mosquitto.org
./emqtt_bench pub -t t/1 -c 1 -h test.mosquitto.org -I 1

# HiveMQ
./emqtt_bench sub -t t/1 -c 1 -h broker.hivemq.com
./emqtt_bench pub -t t/1 -c 1 -h broker.hivemq.com -I 1

MQTTX 接続データ復元

国際的なネットワーク遅延テスト

ネットワーク接続性とネットワーク遅延を確認するために、WebSocket アドレスを使用してテストを行いました。一部のサービスでは ICMP プロトコルが無効化されているため、国内の人気速度測定ツール Webmaster Tools を活用して HTTP の速度機能を使用しました。

名前 HTTP アドレス(クリックしてテスト) WebSocket
EMQX http://broker.emqx.io:8083/mqtt 8083
EMQX (CN) http://broker-cn.emqx.io:8083/mqtt 8083
Eclipse http://mqtt.eclipseprojects.io/mqtt 80
Mosquitto http://test.mosquitto.org/mqtt 80
HiveMQ http://broker.hivemq.com:8000/mqtt 8000

テスト結果

テストは、以下の指標に基づいて行いました:

  • 解決時間:DNS 解決にかかる時間
  • 接続時間:TCP 接続を確立するためにかかる時間
EMQX 解決時間 接続時間
ロサンゼルス 15ms 33ms
東京 - -
香港 - -
シンガポール 55ms 201ms
ドイツ 15ms 160ms
EMQX (CN) 解決時間 接続時間
ロサンゼルス <1ms 156ms
東京 <1ms 90ms
香港 <1ms 35ms
シンガポール <1ms 102ms
ドイツ 17ms 209ms
Mosquitto 解決時間 接続時間
ロサンゼルス <1ms 434ms
東京 <1ms 703ms
香港 <1ms 629ms
シンガポール <1ms 538ms
ドイツ 2ms 59ms
Eclipse 解決時間 接続時間
ロサンゼルス <1ms 72ms
東京 <1ms 155ms
香港 16ms 218ms
シンガポール <1ms 237ms
ドイツ 184ms 88ms
HiveMQ 解決時間 接続時間
ロサンゼルス 5ms 151ms
東京 2ms 248ms
香港 7ms 256ms
シンガポール 7ms 194ms
ドイツ 2ms 2ms

小規模性能テスト

オープンソースの MQTT パフォーマンステストツール emqtt-bench を使用し、各公開ブローカーの Pub/Sub レート制限をテストしました。

実用性を重視したテストシナリオとして、以下の条件でテストを行いました:

  • 条件:1 クライアントで 1 分間、1000 msg/s の Pub/Sub を実行
  • メッセージサイズ:256 バイト

以下は、各ブローカーが基準を満たしているかを示した結果です:

名前 ブローカーアドレス TCP Pub 基準達成 Sub 基準達成
EMQX broker.emqx.io 1883 YES YES
EMQX (中国) broker-cn.emqx.io 1883 YES YES
Eclipse mqtt.eclipseprojects.io 1883 YES YES
Mosquitto test.mosquitto.org 1883 50 msg/s付近で変動 0-50 msg/s間で変動
HiveMQ broker.hivemq.com 1883 YES 約 50 msg/sで安定

実際のメッセージ送信遅延テスト

目的

  • メッセージが Pub から Sub まで送信されるのにかかる時間を測定し、送信の安定性と平均遅延時間を分析。

テスト手順

  1. クライアントが公開サーバーに接続。
  2. 5 秒ごとにタイムスタンプ付きメッセージを送信
  3. サブスクライバーがメッセージを受信し、タイムスタンプの差から遅延時間を計測。

以下はテストモデルです:

メッセージ遅延テストモデル


遅延履歴

遅延の統計結果(5000ms を超えるデータは除外):

MQTTブローカーの遅延履歴


平均遅延

名前 ブローカーアドレス TCP 平均遅延
EMQX broker.emqx.io 1883 207 ms
EMQX (中国) broker-cn.emqx.io 1883 164 ms
Eclipse mqtt.eclipseprojects.io 1883 250 ms
Mosquitto test.mosquitto.org 1883 378 ms
HiveMQ broker.hivemq.com 1883 252 ms

まとめ

各オンライン MQTT サーバーは全体として使用可能ですが、具体的な指標では差が見られました。特に、EMQX のグローバルのアクセスポイントは、良好なパフォーマンスを示し、ほかのブローカーと比較して安定性と遅延の面で優位性を持っています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?