本文档主要记录一下在EMQ压力测试中遇到的一些问题和猜想,如有错误还请指正…
一、准备工作
emqtt_bench压力测试工具
安装部署参考官网:https://docs.emqx.net/broker/latest/cn/tutorial/benchmark.html
1)、首先安装依赖环境 Erlang/OTP 21.2:
## 安装erlang虚拟机
yum -y install ncurses-devel openssl-devel unixODBC-devel gcc-c++
cd /opt
wget http://erlang.org/download/otp_src_21.2.tar.gz
tar -zxvf otp_src_21.2.tar.gz
cd otp_src_21.2
./configure --prefix=/usr/local/erlang --with-ssl -enable-threads -enable-smmp-support -enable-kernel-poll --enable-hipe --without-javac
make && make install
2)、配置环境变量
vim /etc/profile
# erlang
export ERLPATH=/usr/local/erlang
export PATH=$ERLPATH/bin:$PATH
source /etc/profile
3)、验证是否安装成功
[root@node03 emqtt_benchmark]# erl
Erlang/OTP 21 [erts-10.2] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:1] [hipe]
Eshell V10.2 (abort with ^G)
1>
4)、安装emqtt_benchmark
yum -y install git
cd /opt
git clone https://github.com/emqtt/emqtt_benchmark.git
cd emqtt_benchmark
make
Git存在问题的请参考:
(1)、Git源码安装
(2)、unable to access ‘https://github.com/xxxx/xxxx’: SSL connect error
二、压力测试
EMQ部署完成之后,在没有任何优化的情况下,一开始做压力测试,并发连接始终维持在28000左右。后来部署集群(3台)之后,使用负载均衡,三台集群并发连接总和也是无法突破28000的并发连接。并发连接始终卡在28000,因此推测是某个地方的配置限制了,因此进行系统优化。
## 调整系统参数并且开始压测
sysctl -w net.ipv4.ip_local_port_range="1000 65535"
echo 1000000 > /proc/sys/fs/nr_open
ulimit -n 1000000
./emqtt_bench sub -h 192.168.72.141 -c 100000 -p 1883 -i 1 -t bench /%i -q 1
三、系统优化
系统优化整体仍是参考官网:https://docs.emqx.net/broker/latest/cn/tutorial/tune.html
调优之后,单机并发接入达到64505。
使用负载均衡测试3台集群,并发接入总和也是64505。
我们知道单台服务器最多开放6万多个端口号,在上述的系统优化配置设置了端口的范围
net.ipv4.ip_local_port_range='1000 65535'
因此端口号的个数为64535个,除去系统中的一些应用使用的端口(推测大概就是30个),所以优化后的并发接入始终无法突破64505。
因此要想继续进行压力测试,需要增加压力机。推测两台压力机测试单机并发会突破64505,至于具体能够达到多少,则是由emq broker的性能和优化程度决定。
未完待续…
…
增加:
四、增加压力机继续测试
以上猜想基本得到了验证,增加一台压力测试机。两台压力测试机,跑出了11万多的并发连接: