EMQ ---100萬線連接測試說明


注解

EMQ 2.0 消息服務器默認設置,允許最大客戶端連接是512,因為大部分操作系統 ‘ulimit -n’ 限制為1024。

EMQ 消息服務器1.1.3版本,連接壓力測試到130萬線,8核心/32G內存的 CentOS 雲服務器。

操作系統內核參數、TCP 協議棧參數、Erlang 虛擬機參數、EMQ 最大允許連接數設置簡述如下:

Linux 操作系統參數

# 2M - 系統所有進程可打開的文件數量:

sysctl -w fs.file-max=2097152 sysctl -w fs.nr_open=2097152 

# 1M - 系統允許當前進程打開的文件數量:

ulimit -n 1048576 

TCP 協議棧參數

# backlog - Socket 監聽隊列長度:

sysctl -w net.core.somaxconn=65536 

Erlang 虛擬機參數

emqttd/etc/emq.conf:

## Erlang Process Limit
node.process_limit = 2097152 ## Sets the maximum number of simultaneously existing ports for this system node.max_ports = 1048576 

EMQ 最大允許連接數

emqttd/etc/emq.conf ‘listeners’段落:

## Size of acceptor pool
listener.tcp.external.acceptors = 64 ## Maximum number of concurrent clients listener.tcp.external.max_clients = 1000000 

測試客戶端設置

測試客戶端在一個接口上,最多只能創建65000連接:

sysctl -w net.ipv4.ip_local_port_range="500 65535" echo 1000000 > /proc/sys/fs/nr_open 

按應用場景測試

MQTT 是一個設計得非常出色的傳輸層協議,在移動消息、物聯網、車聯網、智能硬件甚至能源勘探等領域有着廣泛的應用。1個字節報頭、2個字節心跳、消息 QoS 支持等設計,非常適合在低帶寬、不可靠網絡、嵌入式設備上應用。

不同的應用有不同的系統要求,用戶使用emqttd消息服務器前,可以按自己的應用場景進行測試,而不是簡單的連接壓力測試:

  1. Android 消息推送: 推送消息廣播測試。
  2. 移動即時消息應用: 消息收發確認測試。
  3. 智能硬件應用: 消息的往返時延測試。
  4. 物聯網數據采集: 並發連接與吞吐測試。

開源 MQTT 客戶端項目

GitHub: https://github.com/emqtt

emqttc Erlang MQTT客戶端庫
emqtt_benchmark MQTT連接測試工具
CocoaMQTT Swift語言MQTT客戶端庫
QMQTT QT框架MQTT客戶端庫

Eclipse Paho: https://www.eclipse.org/paho/

MQTT.org: https://github.com/mqtt/mqtt.github.io/wiki/libraries


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM