JMeter在Debian上如何进行负载测试
导读:在 Debian 上使用 JMeter 进行负载测试的完整流程 一 环境准备 安装 Java 8/11/17(JMeter 5.x 建议使用 Java 8 或 11): 检查版本:java -version 安装 OpenJDK:sud...
在 Debian 上使用 JMeter 进行负载测试的完整流程
一 环境准备
- 安装 Java 8/11/17(JMeter 5.x 建议使用 Java 8 或 11):
- 检查版本:
java -version - 安装 OpenJDK:
sudo apt update & & sudo apt install -y openjdk-11-jdk
- 检查版本:
- 下载并解压 Apache JMeter(以 5.4.1 为例,亦可选择最新稳定版):
wget https://downloads.apache.org//jmeter/binaries/apache-jmeter-5.4.1.tgztar -xzf apache-jmeter-5.4.1.tgz & & cd apache-jmeter-5.4.1
- 可选:将 JMeter 的 bin 目录加入 PATH,便于直接执行
jmeter命令。
二 创建测试计划
- 使用 GUI 本地创建(仅用于设计脚本):
- 启动 GUI:
./bin/jmeter - 主要元件:
- Thread Group:设置线程数(并发用户)、Ramp-Up 时间、循环次数或持续时间。
- HTTP Request:配置协议、服务器名称/IP、端口、路径、方法、请求参数/Body、请求头。
- HTTP Header Manager:如
Content-Type: application/json。 - CSV Data Set Config:参数化测试数据(如用户、手机号等)。
- Listeners:用于本地调试的“查看结果树”,压测时建议使用低开销的“聚合报告/Summary Report”。
- 启动 GUI:
- 保存为 JMX 脚本(例如
test_plan.jmx),后续在服务器以非 GUI 模式运行。
三 非 GUI 运行与报告生成
- 基本命令(推荐在服务器上执行):
- 运行并生成结果:
jmeter -n -t test_plan.jmx -l result.jtl - 运行后生成 HTML 报告:
jmeter -n -t test_plan.jmx -l result.jtl -e -o report/ - 仅从既有结果生成报告:
jmeter -g result.jtl -e -o report/
- 运行并生成结果:
- 常用参数说明:
-n非 GUI 模式;-t指定 JMX 脚本;-l结果日志(CSV/XML);-e运行结束后生成报告;-o报告输出目录(必须为空)。
四 分布式压测与扩展
- 架构与前提:
- 1 台控制机(Controller)+ N 台代理机(Agent),各机器安装相同版本的 Java 与 JMeter。
- 网络互通,开放 1099 端口(RMI)。
- 代理机启动:
./bin/jmeter-server- 如遇 SSL 相关报错,可在
jmeter.properties中设置:server.rmi.ssl.disable=true(取消注释并改为 true)。
- 控制机配置与执行:
- 在
jmeter.properties配置remote_hosts=agent1:1099,agent2:1099 - 启动远程测试:
- 指定节点:
jmeter -n -t test_plan.jmx -R agent1,agent2 -l remote_result.jtl -e -o remote_report/ - 或启动全部:
jmeter -n -t test_plan.jmx -r -l remote_result.jtl -e -o remote_report/
- 指定节点:
- 在
- 常见问题与建议:
- 控制机与代理机的 JMeter 版本保持一致,避免脚本不兼容。
- 跨机器脚本编辑可能导致编码问题(如 JMX 含中文 报错),建议使用 UTF-8 保存脚本。
五 性能与稳定性优化
- 运行与 JVM 优化:
- 压测务必使用 非 GUI 模式,减少资源占用。
- 调整堆内存与 GC(编辑
bin/jmeter或jmeter.sh的HEAP变量),例如:HEAP="-Xms2g -Xmx4g -XX:+UseG1GC"(按机器内存与场景调整)。
- JMeter 配置优化(
jmeter.properties/user.properties):- 降低结果文件开销:关闭保存响应体
jmeter.save.saveservice.response_data=false;按需开启必要字段。 - 控制台摘要频率:
summariser.interval=10(更频繁输出进度)。 - HTTP 客户端:
- 连接存活时间:
httpclient4.time_to_live=60000 - 失败重试次数:
httpclient4.retrycount=1(避免重试干扰指标)
- 连接存活时间:
- 报告生成粒度:
jmeter.reportgenerator.overall_granularity=60000
- 降低结果文件开销:关闭保存响应体
- 监听器与采样器实践:
- 压测时避免 View Results Tree 等高开销监听器,优先使用 Aggregate Report / Summary Report。
- HTTP 取样器建议:
- 实现选择 HttpClient4;启用 Keep-Alive。
- 超时设置:连接超时 5000 ms,响应超时按业务设置(如 10000 ms)。
- 需要模拟浏览器行为时再勾选 Retrieve All Embedded Resources(会增加采样数)。
- 定时器与吞吐量控制:
- 使用 Constant Throughput Timer 控制目标吞吐;高吞吐场景(> 1000 TPS)建议将模式设为 AllActiveThreads,并优先用“持续时间”而非“循环次数”控制测试时长,避免协调遗漏导致的吞吐偏差。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: JMeter在Debian上如何进行负载测试
本文地址: https://pptw.com/jishu/758244.html
