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

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

502

2023.08.10

github中文官网入口 github中文版官网网页进入
github中文官网入口 github中文版官网网页进入

github中文官网入口https://docs.github.com/zh/get-started,GitHub 是一种基于云的平台,可在其中存储、共享并与他人一起编写代码。 通过将代码存储在GitHub 上的“存储库”中,你可以: “展示或共享”你的工作。 持续“跟踪和管理”对代码的更改。

756

2026.01.21

windows查看端口占用情况
windows查看端口占用情况

Windows端口可以认为是计算机与外界通讯交流的出入口。逻辑意义上的端口一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。怎么查看windows端口占用情况呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

740

2023.07.26

查看端口占用情况windows
查看端口占用情况windows

端口占用是指与端口关联的软件占用端口而使得其他应用程序无法使用这些端口,端口占用问题是计算机系统编程领域的一个常见问题,端口占用的根本原因可能是操作系统的一些错误,服务器也可能会出现端口占用问题。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

1128

2023.07.27

windows照片无法显示
windows照片无法显示

当我们尝试打开一张图片时,可能会出现一个错误提示,提示说"Windows照片查看器无法显示此图片,因为计算机上的可用内存不足",本专题为大家提供windows照片无法显示相关的文章,帮助大家解决该问题。

799

2023.08.01

windows查看端口被占用的情况
windows查看端口被占用的情况

windows查看端口被占用的情况的方法:1、使用Windows自带的资源监视器;2、使用命令提示符查看端口信息;3、使用任务管理器查看占用端口的进程。本专题为大家提供windows查看端口被占用的情况的相关的文章、下载、课程内容,供大家免费下载体验。

454

2023.08.02

windows无法访问共享电脑
windows无法访问共享电脑

在现代社会中,共享电脑是办公室和家庭的重要组成部分。然而,有时我们可能会遇到Windows无法访问共享电脑的问题。这个问题可能会导致数据无法共享,影响工作和生活的正常进行。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2354

2023.08.08

windows自动更新
windows自动更新

Windows操作系统的自动更新功能可以确保系统及时获取最新的补丁和安全更新,以提高系统的稳定性和安全性。然而,有时候我们可能希望暂时或永久地关闭Windows的自动更新功能。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

823

2023.08.10

Python 自然语言处理(NLP)基础与实战
Python 自然语言处理(NLP)基础与实战

本专题系统讲解 Python 在自然语言处理(NLP)领域的基础方法与实战应用,涵盖文本预处理(分词、去停用词)、词性标注、命名实体识别、关键词提取、情感分析,以及常用 NLP 库(NLTK、spaCy)的核心用法。通过真实文本案例,帮助学习者掌握 使用 Python 进行文本分析与语言数据处理的完整流程,适用于内容分析、舆情监测与智能文本应用场景。

10

2026.01.27

热门下载

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

精品课程

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

共48课时 | 7.9万人学习

Excel 教程
Excel 教程

共162课时 | 13.8万人学习

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

共33课时 | 2万人学习

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

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