前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用JMeter测试emqx服务器性能

用JMeter测试emqx服务器性能

作者头像
顾翔
发布2019-12-12 14:15:34
2.5K0
发布2019-12-12 14:15:34
举报

来源:http://www.51testing.com

  Apache JMeter是Apache组织开发的基于Java压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。

  JMeter是一个图形化软件,用户设置好test plan之后执行,就可以测试服务器了。

  由于我的阿里云不能图形化,所以我在Linux以及本地windows上分别装了JMeter:先用自己电脑设置好test plan,再上传到阿里云服务器上运行。

JMeter安装步骤

  参考:JMeter测试EMQ集群:http://www.51testing.com/?action-viewnews-itemid-4461956

  (JMeter是java写的,所以安装JMeter前要确保JDK是最新的,我的JDK是1.8)

  去官网下载二进制文件压缩包(不要下源代码):http://jmeter.apache.org/download_jmeter.cgi

  注:关于binary和source,tgz和zip的区别:http://www.51testing.com/?action-viewnews-itemid-4461955

  不过其实windows下也能解压tgz,Linux也能解压zip。linux和windows用相同压缩包的就行。

windows下JMeter安装

  建议对windows熟的童鞋(应该大部分人都是操作windows比较熟练吧)先装windows的。装好之后,Linux那边直接重复相同步骤就可以。

  1. 解压apache-jmeter-5.1.1.tgz

  2. 下载JMeter中支持MQTT的插件

  jmeter原生中没有测试MQTT,因此必须加相关的插件jar包。

  在 GitHub - emqx/mqtt-jmeter: MQTT JMeter Plugin:https://github.com/emqx/mqtt-jmeter,将Download/v1.0.1目录下的mqtt-xmeter-1.0.1-jar-with-dependencies.jar下载下来,然后放在你的jmeter文件夹lib/ext下。

  3. 试试bin/jmeter.bat能不能正常打开~

  JMeter.bat的位置如图

  能正常打开、显示图形界面的话就OK了。

  注:我有看到一些两三年前的博客写到,需要把JMeter加到系统环境变量,但是我并没有加也可以正常使用,现在应该是不用更改环境变量了。

linux下JMeter安装

  1. 解压apache-jmeter-5.1.1.tgz

  tgz格式的压缩包不能用unzip哦。用 tar zxvf apache-jmeter-5.1.1.tgz -C ./ 解压到当前目录

  2. 同windows下安装的第二步

  图方便的话,直接把本地windows的lib/ext文件夹里mqtt-xmeter-1.0.1-jar-with-dependencies.jar上传到Linux端的lib/ext即可。

  3. 配置环境变量

  vim etc/profile

  增加如下内容:

  export PATH=/root/apache-jmeter-5.1.1/bin:$PATH

  就像下面这张图这样:

  改的时候要仔细,PATH写错了补救可是很麻烦的哦

  改完了别忘了执行source /etc/profile

  JMeter的安装到这里就完成了。(真是比emqtt_benchmark简单多了)

添加test plan

  打开windows的JMeter.bat,设置一个test plan

  1. 添加线程组

  2. 添加MQTT connect 测试

  3. 相关设置

  number of threads 线程数:我设置了50000。因为看到有博客说“1G内存对应6W设备连接”。

  然儿我最后线程数只达到了1W多(阿里云轻量服务器,1核CPU,2GB内存)

  1. Server name or IP: 指向被测MQTT服务器地址。我也不太懂为什么127.0.0.1都可以

  2. Port number: TCP连接的端口是1883;SSL连接:8883。

  3. MQTT vesion: EMQ X官网说支持V3.1/V3.1.1。所以这里选3.1或者3.1.1都可以。

  后面那个user name 和 password写登陆emqx dashboard的那个

  4.ClientId prefix: 标识客户端的固定前缀,每个连接(虚拟用户)再添加一个uuid串,整个作为客户标识。

  Keep alive(s): 心跳信号发送间隔。例如,300表示客户端每隔300秒向服务器发出ping请求,以保持连接活跃。

  Connection keep time(s): 连接建立后,保持该连接的时长。例如,1800表示1800秒之后连接将被关闭,即使一直发送心跳信号。

  Connect attempt max: 第一次连接过程中,尝试重连的最大次数。超过该次数则认为连接失败。

  Reconnect attempt max: 后继连接过程中,尝试重连的最大次数。超过该次数则认为连接失败。

  设置完,保存为jmx格式即可。

运行test plan

  jmeter -n -t /root/apache-jmeter-5.1.1/bin/test.jmx

  我最开始报了这样的错:

  Unable to get local host IP address.; nested exception is:

  java.net.UnknownHostException: iZwz95j86y235aroi85ht0Z: iZwz95j86y235aroi85ht0Z: Name or service not known

  解决方法:

  vim /etc/hosts

  #添加你的IP地址 以及刚刚报错信息里提到的这个用户

  例如 123.456.789 iZwz95j86y235aroi85ht0Z

  然后就可以运行了。

  运行的时候可以打开dashboard查看,可以看到连接的client数量在噌噌噌的往上涨。

  如下图所示,可以看到连接的峰值为11581,内存为340M。这个内存好像是emq的节点根据当前的线程数分配的,线程增多,分配的内存(图中的total)就会相应地增加(不过,免费版emqx的内存是有上限的)

  但是我不太懂那个(used/available),为啥是19111。

  可以看到这个clientid和我们在test plan中设置的一样。这些client都是测试产生的。

星云测试

http://www.teststars.cc

奇林软件

http://www.kylinpet.com

联合通测

http://www.quicktesting.net

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软件测试培训 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
测试服务
测试服务 WeTest 包括标准兼容测试、专家兼容测试、手游安全测试、远程调试等多款产品,服务于海量腾讯精品游戏,涵盖兼容测试、压力测试、性能测试、安全测试、远程调试等多个方向,立体化安全防护体系,保卫您的信息安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档