用JMeter测试emqx服务器性能

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。

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

JMeter.bat的位置如图所示:

用JMeter测试emqx服务器性能

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

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

在Linux上安装JMeter

解压apache-jmeter-5.1.1.tgz

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

同Windows下安装的第二步

为了方便,直接将本地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

如图所示:

用JMeter测试emqx服务器性能

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

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

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

添加测试计划

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

添加线程组

用JMeter测试emqx服务器性能

添加MQTT connect测试

用JMeter测试emqx服务器性能

相关设置

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

白瓜面试 白瓜面试

白瓜面试 – AI面试助手,辅助笔试面试神器

白瓜面试 40 查看详情 白瓜面试

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

用JMeter测试emqx服务器性能

用JMeter测试emqx服务器性能

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的用户名和密码。

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服务器性能的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/248959.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
台式电脑怎么选性价比最高?组装与品牌机的选择技巧
上一篇 2026年10月8日 04:25:06
win11怎么创建本地账户_win11新建本地管理员账户教程
下一篇 2025年11月4日 12:35:48

相关推荐

  • 台式电脑怎么选性价比最高?组装与品牌机的选择技巧

    台式电脑怎么选性价比最高?组装与品牌机的选择技巧台式电脑怎么选性价比最高?组装与品牌机的选择技巧台式电脑怎么选性价比最高?组装与品牌机的选择技巧台式电脑怎么选性价比最高?组装与品牌机的选择技巧

    答案是:台式电脑性价比选择需根据需求和预算权衡组装机与品牌机。组装机在性能价格比上更优,适合懂硬件或愿学习的用户,可定制化配置,将预算集中于CPU、GPU、内存、SSD等关键部件,提升整体性能;而品牌机虽价格较高,但胜在省心、售后完善,适合小白、商务用户或追求稳定静音者。选购时应明确用途,避免盲目高…

    2026年10月8日 • 用户投稿
    000
  • LINUX怎么查看硬盘分区和大小_LINUX查看磁盘分区信息的常用命令

    LINUX怎么查看硬盘分区和大小_LINUX查看磁盘分区信息的常用命令LINUX怎么查看硬盘分区和大小_LINUX查看磁盘分区信息的常用命令LINUX怎么查看硬盘分区和大小_LINUX查看磁盘分区信息的常用命令LINUX怎么查看硬盘分区和大小_LINUX查看磁盘分区信息的常用命令

    首先使用df -h查看挂载分区使用情况,再通过lsblk -fl列出块设备信息,接着用sudo fdisk -l查看分区表详情,然后执行sudo parted -l获取磁盘分区布局,最后结合du -sh分析目录空间占用。 如果您需要了解系统中硬盘的分区情况以及各分区的容量信息,可以通过命令行工具快速…

    2026年10月8日 • 用户投稿
    000
  • 跨系统时间同步挑战与NTP协议解决方案:Java应用中的时间偏差处理

    跨系统时间同步挑战与NTP协议解决方案:Java应用中的时间偏差处理跨系统时间同步挑战与NTP协议解决方案:Java应用中的时间偏差处理跨系统时间同步挑战与NTP协议解决方案:Java应用中的时间偏差处理跨系统时间同步挑战与NTP协议解决方案:Java应用中的时间偏差处理

    在分布式系统中,使用System.currentTimeMillis()进行跨机器(如Windows与Linux)的时间比较常常会因系统时钟不同步和网络延迟导致时间偏差,表现为接收时间早于发送时间。本文深入探讨了这一问题根源,并指出直接计算时间差的局限性。最终,推荐采用网络时间协议(NTP)作为最可…

    2026年10月8日 • 用户投稿
    000
  • win10病毒防护总是误报怎么办

    win10病毒防护总是误报怎么办win10病毒防护总是误报怎么办win10病毒防护总是误报怎么办win10病毒防护总是误报怎么办

    今天我们一起来学习一下如何快速禁用 windows 10 系统中的 defender 安全中心。如果您对微软自带的 defender 安全软件不太满意,或者担心它会误报影响其他软件的正常使用,可以按照以下步骤进行操作。 在 Windows 桌面左下角找到一个盾牌形状的图标,右键点击后选择“查看安全仪…

    2026年10月8日 • 用户投稿
    100
  • Java操作FTP服务器的安全连接方案

    Java操作FTP服务器的安全连接方案Java操作FTP服务器的安全连接方案Java操作FTP服务器的安全连接方案Java操作FTP服务器的安全连接方案

    java操作ftps服务器的安全连接方案是使用ftps(ftp over ssl/tls),1. 使用apache commons net库中的ftpsclient类进行实现;2. 初始化时指定ssl或tls协议版本;3. 通过connect()和login()方法完成连接与身份验证;4. 建议启用…

    2026年10月8日 • 用户投稿
    100
  • 抖音APP如何彻底清理缓存数据_抖音APP彻底清理缓存的方法

    抖音APP如何彻底清理缓存数据_抖音APP彻底清理缓存的方法抖音APP如何彻底清理缓存数据_抖音APP彻底清理缓存的方法抖音APP如何彻底清理缓存数据_抖音APP彻底清理缓存的方法抖音APP如何彻底清理缓存数据_抖音APP彻底清理缓存的方法

    首先通过抖音内置功能清理缓存,依次进入“我”→“设置”→“清理占用空间”,勾选临时文件等项目后点击清理;其次可通过手机系统设置中的应用管理,找到抖音并清除缓存;部分手机支持长按图标快捷清理;最后需手动清理草稿箱和收藏中的冗余内容以释放更多空间。 1、立即进入“TikTok(抖音国际版)官网☜☜☜☜☜…

    2026年10月8日 • 用户投稿
    100
  • Apache Cloudberry (Incubating) 2.0.0 发布

    Apache Cloudberry (Incubating) 2.0.0 发布Apache Cloudberry (Incubating) 2.0.0 发布Apache Cloudberry (Incubating) 2.0.0 发布Apache Cloudberry (Incubating) 2.0.0 发布

    Apache Cloudberry 2.0.0 正式上线,标志着该项目在 Apache 软件基金会孵化过程中的首个重要里程碑。 核心特性一览 PostgreSQL 14 基底:以 PostgreSQL 14.x 为基础构建,提供稳定且增强的 PostgreSQL 功能,适用于分布式分析场景性能全面提…

    2026年10月8日 • 用户投稿
    000
  • 电脑怎么查看系统日志文件

    电脑怎么查看系统日志文件电脑怎么查看系统日志文件电脑怎么查看系统日志文件电脑怎么查看系统日志文件

    日志文件,通俗来说就是计算机系统在运行过程中记录各类系统异常和事件的文件。通过这些记录,我们可以清楚了解错误发生的具体时间及相关信息,进而排查问题根源。尽管日志文件功能强大,但仍有不少用户不清楚如何查看。别担心,接下来就让小编带你一步步掌握查看电脑系统日志的方法。 操作步骤如下: 1. 首先,在桌面…

    2026年10月8日 • 用户投稿
    100
  • composer如何处理对私有GitHub Enterprise仓库的访问

    composer如何处理对私有GitHub Enterprise仓库的访问composer如何处理对私有GitHub Enterprise仓库的访问composer如何处理对私有GitHub Enterprise仓库的访问composer如何处理对私有GitHub Enterprise仓库的访问

    配置Composer访问私有GitHub Enterprise仓库需先创建具有repo权限的PAT,通过composer config -g设置全局认证,再在composer.json中添加type为vcs的仓库地址,确保包名与name字段一致;也可改用SSH方式并配置对应密钥。 Composer …

    2026年10月8日 • 用户投稿
    100
  • VSCode如何搭建元宇宙开发环境 VSCode3D世界构建的完整配置

    在vscode中搭建3d世界开发环境需先安装node.js和npm,再通过npm init -y初始化项目并安装three.js等3d框架;2. 安装live server、eslint、prettier、path intellisense和debugger for chrome/edge等vsco…

    2026年10月8日
    000
  • 装win11系统需要注意什么

    装win11系统需要注意什么装win11系统需要注意什么装win11系统需要注意什么装win11系统需要注意什么

    首先,您需要确认自己的电脑配置是否能够支持安装Win11。如果您所用的设备不符合这些标准,则可能无法成功安装Windows 11。您可以通过右键单击“我的电脑”,然后选择“属性”来查看电脑的相关配置信息。 如果您的设备当前正在运行Windows 10,您可以利用电脑健康状况检查应用程序来判断其兼容性…

    2026年10月8日 • 用户投稿
    300
  • 怎么使用u盘一键重装系统

    怎么使用u盘一键重装系统怎么使用u盘一键重装系统怎么使用u盘一键重装系统怎么使用u盘一键重装系统

    U盘一键重装系统核心是制作可启动安装盘,先准备U盘和系统镜像,用Rufus等工具将ISO写入U盘并设置电脑从U盘启动,进入安装界面后选择自定义安装并正确分区,完成系统安装后配置驱动、更新、安全软件及常用程序,确保系统流畅安全运行。 用U盘一键重装系统,这事儿说起来简单,实际操作起来也确实比以前方便太…

    2026年10月8日 • 用户投稿
    200
  • 豆包AI如何识别图片文字?OCR功能使用指南

    豆包ai的ocr技术基于深度学习算法,通过卷积神经网络(cnn)和循环神经网络(rnn)或变换器模型实现文字识别。使用时,用户需登录平台,选择ocr工具,上传图片并点击“开始识别”按钮。豆包ai的ocr功能广泛应用于扫描纸质文档、学术研究和旅游等场景,但受限于图片质量、字体差异和复杂背景等因素。 ☞…

    2026年10月8日
    200
  • 用幕布制作一个简单的工作流程图_幕布流程图绘制与节点连接方法

    用幕布制作一个简单的工作流程图_幕布流程图绘制与节点连接方法用幕布制作一个简单的工作流程图_幕布流程图绘制与节点连接方法用幕布制作一个简单的工作流程图_幕布流程图绘制与节点连接方法用幕布制作一个简单的工作流程图_幕布流程图绘制与节点连接方法

    首先通过缩进构建流程层级,再用箭头符号模拟流向,接着切换为思维导图视图实现图形化展示,最后利用颜色标签区分阶段,使幕布呈现清晰的流程图结构。 如果您需要在幕布中梳理任务结构并实现可视化表达,但发现默认的层级列表无法直观展示流程关系,可以通过特定技巧将幕布的节点组织成流程图形式。以下是实现这一目标的具…

    2026年10月8日 • 用户投稿
    100
  • MySQL如何管理数据库缓存 查询缓存/缓冲池监控与刷新

    MySQL如何管理数据库缓存 查询缓存/缓冲池监控与刷新MySQL如何管理数据库缓存 查询缓存/缓冲池监控与刷新MySQL如何管理数据库缓存 查询缓存/缓冲池监控与刷新MySQL如何管理数据库缓存 查询缓存/缓冲池监控与刷新

    mysql管理数据库缓存主要通过缓冲池实现,查询缓存虽已弃用但仍有助于理解缓存机制。1. 监控缓冲池性能需关注命中率、脏页比例和使用率,使用show global status命令或性能模式及第三方工具进行监控;2. 刷新缓冲池可通过重启服务、执行flush tables或使用innodb特定命令实…

    2026年10月8日 • 用户投稿
    000
  • 2025普通人在快手怎么挣钱?快手小店怎么开通卖货?

    快手作为国内领先的短视频和直播平台,为普通人提供了多种变现途径,无论是通过内容创作、直播带货还是电商运营,都有机会实现收入增长。以下将从普通人在快手赚钱的主要方式、快手小店开通流程及运营技巧等方面,为您详细解读。 一、普通人在快手如何赚钱? 普通人在快手可以通过内容创作与多元化的变现渠道实现收益,核…

    2026年10月8日
    000
  • Win10系统如何打开bak文件?

    Win10系统如何打开bak文件?Win10系统如何打开bak文件?Win10系统如何打开bak文件?Win10系统如何打开bak文件?

    windows 10系统是微软最新推出的操作系统,我们在日常使用中也常常会备份一些重要的文件。不过,像编程、绘图设计等软件会自动生成备份文件,当我们源文件丢失时,可以通过这些以.bak为扩展名的备份文件进行再次编辑。这里我为大家整理了一份详细的打开.bak文件的图文教程,供参考。 .bak是备份文件…

    2026年10月8日 • 用户投稿
    200
  • poki小游戏无需注册秒玩_poki小游戏免费直达入口

    poki小游戏无需注册秒玩_poki小游戏免费直达入口poki小游戏无需注册秒玩_poki小游戏免费直达入口poki小游戏无需注册秒玩_poki小游戏免费直达入口poki小游戏无需注册秒玩_poki小游戏免费直达入口

    Poki小游戏免费直达入口为https://poki.com/zh,平台汇集动作、解谜、策略等千款游戏,支持无需注册秒玩,跨设备畅玩并持续更新内容。 Poki小游戏无需注册秒玩入口地址在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来poki小游戏免费直达入口,感兴趣的网友一起随小编来瞧瞧吧…

    2026年10月8日 • 用户投稿
    200
  • Java操作ActiveMQ实现消息队列的完整实现方案

    Java操作ActiveMQ实现消息队列的完整实现方案Java操作ActiveMQ实现消息队列的完整实现方案Java操作ActiveMQ实现消息队列的完整实现方案Java操作ActiveMQ实现消息队列的完整实现方案

    在java中操作activemq实现消息队列的流程包括以下步骤:1. 搭建activemq环境,可启动本地broker或代码中创建嵌入式broker;2. maven项目添加activemq-client依赖;3. 发送消息时创建连接、会话、生产者并设置消息类型和发送模式;4. 接收消息可通过监听器…

    2026年10月8日 • 用户投稿
    200
  • linux中的管道指什么重定向又指什么

    linux中的管道指什么重定向又指什么linux中的管道指什么重定向又指什么linux中的管道指什么重定向又指什么linux中的管道指什么重定向又指什么

    在linux中,管道是一种两个进程间进行单向通信的机制;可以把一个程序的输出数据,通过这个通道,输入给另一个程序。重定向是指修改原来默认的一些东西,对原来系统命令的默认执行方式进行改变。 本教程操作环境:linux7.3系统、Dell G3电脑。 熟悉操作系统的朋友,常常会听到、用到管道和重定向这两…

    2026年10月8日 • 用户投稿
    000

发表回复

登录后才能评论
关注微信