EMQ压力测试及系统优化(单机11万并发连接)

本文档主要记录一下在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万多的并发连接:
在这里插入图片描述

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值