常⽤的MQTT服务器性能测试和优化环境
1. 服务器系统:Ubuntu 16.04 LTS
2. 压测客户端系统:Ubuntu 16.04 LTS
3. 压测⼯具:apache-jmeter-5.2,jmeter-mqtt插件
通⽤配置
1. 服务器配置优化
1. 修改最⼤⽂件句柄数
> ulimit -n 1048576
> vim /etc/f
* soft nofile 1048576
* hard nofile 1048576
* soft nproc 655350
* hard nproc 655350
2. 修改系统所有进程可打开的⽂件数量
> sysctl -w fs.file-max=2097152
> sysctl -_open=2097152
> vim /f
fs.file-max = 2097152
<_open = 2097152
3. 设置服务最⼤⽂件句柄数
> vim /etc/f
DefaultLimitNOFILE=1048576
4. TCP 协议栈⽹络参数配置
开源mqtt服务器
> vim /f
### backlog - Socket 监听队列长度:
p_max_syn_backlog=16384
## 可⽤知名端⼝范围:
net.ipv4.ip_local_port_range='1000 65535'
## TCP Socket 读写 Buffer 设置:
# 确定 TCP 栈应该如何反映内存使⽤
p_mem='16777216 16777216 16777216'
# 表⽰的是为⾃动调优所使⽤的接收缓冲区的值
p_rmem='1024 4096 16777216'
# 为⾃动调优定义每个 socket 使⽤的内存
p_wmem='1024 4096 16777216'
## TCP 连接追踪设置:
net.nf_conntrack_max=1000000
net.nf_conntrack_max=1000000
netfilter.nf_conntrack_max=1000000
netfilter.nf_conntrack_tcp_timeout_time_wait=30
## FIN-WAIT-2 Socket 超时设置:
p_fin_timeout = 15
## TIME-WAIT Socket 最⼤数量、回收与重⽤设置:
p_max_tw_buckets=1048576
2. 进⾏压测的客户端优化配置
1. tcp端⼝限制
> echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range
⼀、EMQ(emqx 3.2.5)
1. Erlang 虚拟机参数(EMQ配置⽂件)
> vim /usr/local/emqttd/f
## Erlang进程数,⼀个mqtt连接对应两个Erlang进程,⼀个端⼝
node.process_limit = 2097152
node.max_ports = 1048576
## EMQ 配置连接数
2. 客户端连接测试
1. 测试脚本
> ./apache-jmeter-5.2/bin/jmeter.sh -n -t /usr/local/dev/jmeter-test-file/Emq/conn/MQTT连接测试.jmx -l res.jtl -j res.log -e -o output
2. 测试数据
1. 客户端10000连接:
2. 20000客户端连接:
3. 30000客户端连接:
3. 客户端订阅、发布测试
1. 测试脚本
> ./apache-jmeter-5.2/bin/jmeter.sh -n -t /usr/local/dev/jmeter-test-file/Emq/mqtt-pub-sub.jmx -l res.jtl -j res.log -e -o output
2. 测试数据
1. 客户端发布端10000,订阅端10000:
⼆、 ActiveMQ(5.12.0)
1. 配置⽂件f
> vim f
<transportConnector name="mqtt"uri="mqtt://localhost:1883?maximumConnections=30000&wireFormat.maxFrameSize=3048576000"/> 2. 客户端连接测试
1. 测试脚本
> ./apache-jmeter-5.2/bin/jmeter.sh -n -t /usr/local/dev/jmeter-test-file/Emq/conn/MQTT连接测试.jmx -l res.jtl -j res.log -e -o output
2. 测试数据
1. 客户端10000连接:
2. 客户端20000连接:
三、 Mosquitto(1.6.7)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。