描述:apache jmeter是由apache组织开发的基于java的压力测试工具,用于对软件进行压力测试。它最初设计用于web应用测试,但后来扩展到其他测试领域。JMeter是一款图形化软件,用户设置好测试计划后执行,即可测试服务器。由于我的阿里云不支持图形化操作,因此我在Linux和本地Window…
apache jmeter是由apache组织开发的基于java的压力测试工具,用于对软件进行压力测试。它最初设计用于web应用测试,但后来扩展到其他测试领域。
JMeter是一款图形化软件,用户设置好测试计划后执行,即可测试服务器。
由于我的阿里云不支持图形化操作,因此我在Linux和本地Windows上分别安装了JMeter:首先在自己的电脑上设置好测试计划,然后上传到阿里云服务器上运行。
JMeter安装步骤
参考:JMeter测试EMQ集群:https://www.php.cn/link/1d10c65b774172bd62b8b1dae15b8fd8
(JMeter是用Java编写的,因此安装JMeter前需要确保JDK是最新的,我的JDK版本是1.8)
从官网下载二进制文件压缩包(不要下载源代码):https://www.php.cn/link/c40b0a7144f196988c2d5d13fa8ca93a
注:关于binary和source,tgz和zip的区别:https://www.php.cn/link/45c2d3411b9139f5c37b5041aad1ff9b
实际上,Windows可以解压tgz文件,Linux也可以解压zip文件。使用相同类型的压缩包即可。
在Windows上安装JMeter
建议对Windows熟练的用户(大多数人应该对Windows操作比较熟练)先安装Windows版本。安装完成后,Linux端可以重复相同的步骤。
解压apache-jmeter-5.1.1.tgz
下载JMeter中支持MQTT的插件
JMeter原生不支持测试MQTT,因此需要添加相关的插件jar包。
在 GitHub - emqx/mqtt-jmeter: MQTT JMeter Plugin:https://www.php.cn/link/a4b9f0e707aed5a52241d458a2910705。
JMeter.bat的位置如图所示:
如果能正常打开并显示图形界面,则安装成功。
注:我看到一些两三年前的博客提到,需要将JMeter添加到系统环境变量中,但我没有这样做也能正常使用,现在应该不需要更改环境变量了。
在Linux上安装JMeter
注意,tgz格式的压缩包不能使用unzip命令。使用tar zxvf apache-jmeter-5.1.1.tgz -C ./命令解压到当前目录。
为了方便,直接将本地Windows的lib/ext目录下的mqtt-xmeter-1.0.1-jar-with-dependencies.jar上传到Linux端的lib/ext目录即可。
使用vim编辑/etc/profile文件:
增加以下内容:
export PATH=/root/apache-jmeter-5.1.1/bin:$PATH
如图所示:
修改时要小心,PATH写错后补救会很麻烦。
修改完成后,别忘了执行source /etc/profile。
JMeter的安装到此就完成了。(比emqtt_benchmark简单多了)
添加测试计划
打开Windows的JMeter.bat,设置一个测试计划。
number of threads(线程数):我设置了50000。因为看到有博客说“1G内存对应6W设备连接”。

排查 GitHub Actions 工作流问题,特别针对 Go 项目。诊断失败的工作流,区分代码问题与环境问题,解读日志,并修复常见的 CI/CD 问题。
但最后我的线程数只达到了1万多(阿里云轻量服务器,1核CPU,2GB内存)。
Server name or IP:指向被测MQTT服务器地址。我不太明白为什么127.0.0.1也可以用。
Port number:TCP连接的端口是1883;SSL连接:8883。
MQTT version:EMQ X官网说支持V3.1/V3.1.1。所以这里选择3.1或3.1.1都可以。
后面那个user name和password填写登录emqx dashboard的用户名和密码。
Keep alive(s):心跳信号发送间隔。例如,300表示客户端每隔300秒向服务器发出ping请求,以保持连接活跃。
Connection keep time(s):连接建立后,保持该连接的时长。例如,1800表示1800秒之后连接将被关闭,即使一直发送心跳信号。
Connect attempt max:第一次连接过程中,尝试重连的最大次数。超过该次数则认为连接失败。
Reconnect attempt max:后继连接过程中,尝试重连的最大次数。超过该次数则认为连接失败。
设置完成后,保存为jmx格式。
运行测试计划
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
例如 123.456.789 iZwz95j86y235aroi85ht0Z
然后就可以运行了。
运行时可以打开dashboard查看,可以看到连接的client数量在快速增加。
如图所示,可以看到连接的峰值为11581,内存为340M。这个内存似乎是emq的节点根据当前的线程数分配的,线程增多,分配的内存(图中的total)会相应增加(不过,免费版emqx的内存是有上限的)。
但我不太明白那个(used/available)的值,为何是19111。
可以看到这个clientid和我们在测试计划中设置的一样。这些client都是测试产生的。
星云测试
https://www.php.cn/link/add899414cf1cb01b7c3316db9310a09
奇林软件
https://www.php.cn/link/3e59327f1a6ccf540d9878cf8c991278
联合通测
6元服务器租用,高性价比VPS主机推荐 记得去年我刚开始创业,做了一个小型网站来展示我的产品。那时,我手头紧,预算有限,却急着需要一个可靠的服务器来托管网站。作为一个普通上班族,我对技术懂得不多,但我…
2021年云服务器优惠套餐推荐 嗨,朋友们!你是否曾经在深夜里,面对一堆代码和服务器错误,感叹说:“为什么我的项目老是卡顿?”如果是这样的话,那你可能正在寻找2021年云服务器优惠套餐的解决方案。作为…
盘点最新优惠 云服务器网站推荐 探盘最新优惠 云服务器网站推荐 云计算技术的迅猛发展,使得云服务器成为企业和个人开发者不可或缺的基础设施。云服务器,作为一种基于虚拟化技术的计算资源,允许用户按需获取计…
实惠低价云服务器f2g评测 实惠低价云服务器F2G评测 随着云计算技术的快速发展,云服务器已经成为企业和个人开发者的重要选择。相比传统的物理服务器,云服务器在灵活性、可扩展性和成本上具有显著优势。然而…
云服务器99元一年 清晨的阳光透过窗帘缝隙照进房间,我睁开眼睛,习惯性地摸向手机。屏幕上显示的日期提醒我,又一个月开始了。昨晚,我还在为创业项目的事情辗转反侧。 "到底要不要试试云服务器呢?"这是我最…
竟然有如此便宜的云服务器? 那天,我正坐在咖啡馆里,手里拿着笔记本电脑,本来想找个地方测试我的新网站。但我突然意识到,我需要一个稳定的服务器来托管它。过去,我一直以为云服务器至少要几百块钱一个月,结果…