0

0

用JMeter测试emqx服务器性能

蓮花仙者

蓮花仙者

发布时间:2025-09-20 08:20:26

|

221人浏览过

|

来源于php中文网

原创

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设备连接”。

小生淘宝客程序打折程序
小生淘宝客程序打折程序

淘宝客打折系统,集成了jssdk模块,增加了seo优化功能,更有利于搜索引擎收录 1程序上传到服务器空间 2开启服务器 3打开安装地址:http://您的域名/install.php 4如果不能安装请确保数据库里的表全部删除 5进入后台地址:http://您的域名/main.php 默认用户名和密码都是admin 6测试数据时可以导入 test文件夹里的test.sql文件 到数据库,或者

下载

但最后我的线程数只达到了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

相关文章

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
java
java

Java是一个通用术语,用于表示Java软件及其组件,包括“Java运行时环境 (JRE)”、“Java虚拟机 (JVM)”以及“插件”。php中文网还为大家带了Java相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

836

2023.06.15

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

741

2023.07.05

java自学难吗
java自学难吗

Java自学并不难。Java语言相对于其他一些编程语言而言,有着较为简洁和易读的语法,本专题为大家提供java自学难吗相关的文章,大家可以免费体验。

736

2023.07.31

java配置jdk环境变量
java配置jdk环境变量

Java是一种广泛使用的高级编程语言,用于开发各种类型的应用程序。为了能够在计算机上正确运行和编译Java代码,需要正确配置Java Development Kit(JDK)环境变量。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

397

2023.08.01

java保留两位小数
java保留两位小数

Java是一种广泛应用于编程领域的高级编程语言。在Java中,保留两位小数是指在进行数值计算或输出时,限制小数部分只有两位有效数字,并将多余的位数进行四舍五入或截取。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

399

2023.08.02

java基本数据类型
java基本数据类型

java基本数据类型有:1、byte;2、short;3、int;4、long;5、float;6、double;7、char;8、boolean。本专题为大家提供java基本数据类型的相关的文章、下载、课程内容,供大家免费下载体验。

446

2023.08.02

java有什么用
java有什么用

java可以开发应用程序、移动应用、Web应用、企业级应用、嵌入式系统等方面。本专题为大家提供java有什么用的相关的文章、下载、课程内容,供大家免费下载体验。

430

2023.08.02

java在线网站
java在线网站

Java在线网站是指提供Java编程学习、实践和交流平台的网络服务。近年来,随着Java语言在软件开发领域的广泛应用,越来越多的人对Java编程感兴趣,并希望能够通过在线网站来学习和提高自己的Java编程技能。php中文网给大家带来了相关的视频、教程以及文章,欢迎大家前来学习阅读和下载。

16926

2023.08.03

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

72

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.4万人学习

Excel 教程
Excel 教程

共162课时 | 12.3万人学习

PHP基础入门课程
PHP基础入门课程

共33课时 | 1.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号