Linux下使用jmeter进行分布式压测

主控机和压测机均为Linux系统
为了避免一些未知的错误,建议三台机器使用同样版本的jdk、jmeter
注:建议配置好其中一台机器后,直接克隆出另外两台
一台master,两台slave

1. Master配置

进到jmeter安装目录的bin文件夹,修改jmeter.properties文件

vim jmeter.properties

//大概第1038行,添加/修改以下代码:
jmeterengine.nongui.port=0

2. Slave机配置

进到jmeter安装目录的bin文件夹,修改jmeter-server
vim jmeter-server
添加以下代码:

RMI_HOST_DEF=-Djava.rmi.server.hostname=slave本机IP

开启jmeter-server服务

。/jmeter-server

运行成功后,会在控制台打印:

Created remote object: UnicastServerRef [liveRef: [endpoint:[***](local),objID:[***, ***]]]

3. 运行脚本,开始测试

运行以下命令:(master也作为一台负载机)

/home/jump/test/apache-jmeter-5.1.1/bin/jmeter -n -t /home/jump/test/scripts/im_test.jmx -R 127.0.0.1,10.3.0.111,10.3.0.112 -l /home/jump/test/results/ds_qrcodeScan_600u_10min.jtl

看到以下内容则表示各项配置无误,可以开始测试:

Creating summariser <summary>
Created the tree successfully using test.jmx
Configuring remote engine: ***
Configuring remote engine: ***
Starting remote engines
Starting the test @ Sun Mar 04 11:23:31 CST 2018 (1520133811112)
Remote engines have been started

此时slave机器的控制台会提示:

Starting the test on host *** @ Sun Mar 04 11:23:32 CST 2018 (1520133812700)

脚本运行结束后,slave机器的控制台会提示:

Finished the test on host *** @ Sun Mar 04 11:25:53 CST 2018 (1520133953286)

踩过的坑

  1. 执行压测时,连接agent成功,但是并未开始就结束了,也没有任何报错
    原因:有参数文件未读取到
    解决方案:
    • jmeter脚本和测试数据(如果有的话)主机和从机两边都要存放。且controller中jmeter脚本、测试数据的存放路径和agent中jmeter脚本、测试数据的存放路径一致。
    • 在原因1的基础上,controller的测试数据地址要用绝对路径,agent的测试数据绝对路径或相对路径均可。
  2. 执行./jmeter-server,会提示不可执行,需要首先赋予可执行权限chmod +x jmeter-server
posted @   往事如云烟都付笑谈中  阅读(350)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示