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)
踩过的坑
- 执行压测时,连接agent成功,但是并未开始就结束了,也没有任何报错
原因:有参数文件未读取到
解决方案:- jmeter脚本和测试数据(如果有的话)主机和从机两边都要存放。且controller中jmeter脚本、测试数据的存放路径和agent中jmeter脚本、测试数据的存放路径一致。
- 在原因1的基础上,controller的测试数据地址要用绝对路径,agent的测试数据绝对路径或相对路径均可。
- 执行./jmeter-server,会提示不可执行,需要首先赋予可执行权限
chmod +x jmeter-server
从被动忍受孤独,到安然享受孤独,我想,这便是我们不愿太早面对,却又不得不昂首迎接的,成长。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .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