当前位置:首页 > 云服务器

用JMeter测试emqx服务器性能

游戏科技网2026年09月15日 03:06云服务器20
描述: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端可以重复相同的步骤。

  1. 解压apache-jmeter-5.1.1.tgz

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

JMeter原生不支持测试MQTT,因此需要添加相关的插件jar包。

在 GitHub - emqx/mqtt-jmeter: MQTT JMeter Plugin:https://www.php.cn/link/a4b9f0e707aed5a52241d458a2910705

  1. 尝试运行bin/jmeter.bat,看是否能正常打开。

JMeter.bat的位置如图所示:

用JMeter测试emqx服务器性能

如果能正常打开并显示图形界面,则安装成功。

注:我看到一些两三年前的博客提到,需要将JMeter添加到系统环境变量中,但我没有这样做也能正常使用,现在应该不需要更改环境变量了。

在Linux上安装JMeter

  1. 解压apache-jmeter-5.1.1.tgz

注意,tgz格式的压缩包不能使用unzip命令。使用tar zxvf apache-jmeter-5.1.1.tgz -C ./命令解压到当前目录。

  1. 同Windows下安装的第二步

为了方便,直接将本地Windows的lib/ext目录下的mqtt-xmeter-1.0.1-jar-with-dependencies.jar上传到Linux端的lib/ext目录即可。

  1. 配置环境变量

使用vim编辑/etc/profile文件:

增加以下内容:

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

如图所示:

用JMeter测试emqx服务器性能

修改时要小心,PATH写错后补救会很麻烦。

修改完成后,别忘了执行source /etc/profile。

JMeter的安装到此就完成了。(比emqtt_benchmark简单多了)

添加测试计划

打开Windows的JMeter.bat,设置一个测试计划。

  1. 添加线程组

用JMeter测试emqx服务器性能

  1. 添加MQTT connect测试

用JMeter测试emqx服务器性能

  1. 相关设置

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

用JMeter测试emqx服务器性能
GitHub Actions Troubleshooting

排查 GitHub Actions 工作流问题,特别针对 Go 项目。诊断失败的工作流,区分代码问题与环境问题,解读日志,并修复常见的 CI/CD 问题。

下载

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

用JMeter测试emqx服务器性能

用JMeter测试emqx服务器性能

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

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

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

后面那个user name和password填写登录emqx dashboard的用户名和密码。

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

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

添加你的IP地址以及刚刚报错信息中提到的用户名

例如 123.456.789 iZwz95j86y235aroi85ht0Z

然后就可以运行了。

运行时可以打开dashboard查看,可以看到连接的client数量在快速增加。

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

但我不太明白那个(used/available)的值,为何是19111。

用JMeter测试emqx服务器性能

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

用JMeter测试emqx服务器性能

星云测试

https://www.php.cn/link/add899414cf1cb01b7c3316db9310a09

奇林软件

https://www.php.cn/link/3e59327f1a6ccf540d9878cf8c991278

联合通测

https://www.php.cn/link/8e3460e10028fee7cad4702caf594d18

“用JMeter测试emqx服务器性能” 的相关文章

6元服务器租用,高性价比VPS主机推荐

6元服务器租用,高性价比VPS主机推荐 记得去年我刚开始创业,做了一个小型网站来展示我的产品。那时,我手头紧,预算有限,却急着需要一个可靠的服务器来托管网站。作为一个普通上班族,我对技术懂得不多,但我…

2021年云服务器优惠套餐推荐

2021年云服务器优惠套餐推荐 嗨,朋友们!你是否曾经在深夜里,面对一堆代码和服务器错误,感叹说:“为什么我的项目老是卡顿?”如果是这样的话,那你可能正在寻找2021年云服务器优惠套餐的解决方案。作为…

盘点最新优惠 云服务器网站推荐

盘点最新优惠 云服务器网站推荐 探盘最新优惠 云服务器网站推荐 云计算技术的迅猛发展,使得云服务器成为企业和个人开发者不可或缺的基础设施。云服务器,作为一种基于虚拟化技术的计算资源,允许用户按需获取计…

实惠低价云服务器f2g评测

实惠低价云服务器f2g评测 实惠低价云服务器F2G评测 随着云计算技术的快速发展,云服务器已经成为企业和个人开发者的重要选择。相比传统的物理服务器,云服务器在灵活性、可扩展性和成本上具有显著优势。然而…

云服务器99元一年

云服务器99元一年 清晨的阳光透过窗帘缝隙照进房间,我睁开眼睛,习惯性地摸向手机。屏幕上显示的日期提醒我,又一个月开始了。昨晚,我还在为创业项目的事情辗转反侧。 "到底要不要试试云服务器呢?"这是我最…

竟然有如此便宜的云服务器?

竟然有如此便宜的云服务器? 那天,我正坐在咖啡馆里,手里拿着笔记本电脑,本来想找个地方测试我的新网站。但我突然意识到,我需要一个稳定的服务器来托管它。过去,我一直以为云服务器至少要几百块钱一个月,结果…