如何在Ubuntu上使用JMeter进行性能调优
导读:Ubuntu上使用JMeter进行性能调优 一 环境准备与Java版本 安装 OpenJDK 11(Ubuntu 20.04/22.04 推荐 LTS 版本):sudo apt update && sudo apt ins...
Ubuntu上使用JMeter进行性能调优
一 环境准备与Java版本
- 安装 OpenJDK 11(Ubuntu 20.04/22.04 推荐 LTS 版本):sudo apt update & & sudo apt install -y openjdk-11-jdk
- 验证:java -version 应显示 11.x
- 下载并解压 JMeter(示例为 5.6.3):wget https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.6.3.tgz & & tar -xzf apache-jmeter-5.6.3.tgz -C /opt
- 配置环境变量(/etc/profile 或 ~/.bashrc):export JMETER_HOME=/opt/apache-jmeter-5.6.3;export PATH=$JMETER_HOME/bin:$PATH
- 验证:jmeter -v 显示版本号;jmeter 可启动 GUI(仅用于调试)
二 关键配置优化
- 启动脚本堆内存与GC(JMeter 安装目录/bin/jmeter):将 HEAP 调整为合适大小,建议 -Xms 与 -Xmx 等值,如:-Xms2g -Xmx2g;并添加 -XX:+UseG1GC;非调试加 -Djava.awt.headless=true。示例(在 jmeter 脚本中找到 HEAP 行并修改):HEAP=“-Xms2g -Xmx2g -XX:+UseG1GC”
- jmeter.properties 核心项:
- httpclient4.time_to_live=60000(连接最大存活时间,毫秒)
- httpclient4.retrycount=1(失败重试次数,降低重复请求干扰)
- jmeter.save.saveservice.response_data=false(避免保存响应体导致磁盘 I/O 过高)
- summariser.interval=10(控制台摘要输出频率,秒)
- HTTP 取样器:
- Implementation 选 HttpClient4
- 超时:Connect Timeout 5000 ms;Response Timeout 按业务设(如 10000 ms)
- 勾选 Use KeepAlive;仅在需要时勾选 Retrieve All Embedded Resources(会显著增加采样数)
三 执行与结果分析
- 命令行非 GUI 执行(推荐):jmeter -n -t your_plan.jmx -l result.jtl
- 生成 HTML 报告(JMeter ≥ 3.0):jmeter -g result.jtl -o ./report
- 报告粒度(reportgenerator.properties):jmeter.reportgenerator.overall_granularity=1000(按 1 秒聚合,便于观察 TPS 抖动)
- 控制台实时摘要:summariser.interval=10 可更频繁刷新吞吐、响应时间与错误率
- 结果字段精简:仅保留必要字段(如 time、label、responseCode、success 等),减少 I/O 与内存占用
四 分布式压测扩展
- 适用场景:单机线程/端口/CPU 成为瓶颈时,横向扩展压力机
- Slave 节点:
- jmeter.properties:server.rmi.ssl.disable=true
- jmeter-server 启动前设置本机 IP:./jmeter-server -Djava.rmi.server.hostname=SLAVE_IP
- Master 节点:
- jmeter.properties:remote_hosts=IP1:PORT,IP2:PORT
- 执行:jmeter -n -t plan.jmx -R IP1,IP2 -l result.jtl -e -o ./report
- 注意:各节点 JMeter/插件版本保持一致;网络与防火墙开放 RMI 端口(默认 1099) 及 server_port
五 调优流程与排错要点
- 基线先行:先用小并发跑通脚本,逐步拉高线程,观察吞吐(TPS)、P95/P99、错误率与 GC 行为,形成可复现基线
- 逐步增压:每次仅变更一个变量(线程数/超时/连接池/重试/数据大小),便于定位瓶颈
- 资源监控:
- JMeter 侧用 JConsole 连到 ApacheJMeter.jar 进程,核对 -Xmx 是否生效、GC 频率与停顿
- 系统侧用 top/vmstat/iostat 观察 CPU、内存、网络与磁盘 I/O,确认瓶颈在 SUT 还是 JMeter
- 常见错误与修复:
- java.lang.OutOfMemoryError:增大 -Xmx(如 2g→4g),并减少保存字段(关闭 response_data)、降低并发或改用分布式
- 端口/连接耗尽:调大连接池与 KeepAlive 复用;必要时增加压力机或延长 ramp-up
- 结果文件过大:改用 CSV 输出、精简字段、缩短测试时长或分场景拆分
- 经验值(需结合业务验证):
- 单机并发不宜过高,建议先控制在 ≤50 线程观察拐点,再决定是否分布式扩展
- 连接与超时:KeepAlive 开启;Connect 5s、Response 按 SLA 设定(如 10s)
- 重试:压测阶段建议 1 次 或关闭,避免掩盖系统真实稳定性问题
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何在Ubuntu上使用JMeter进行性能调优
本文地址: https://pptw.com/jishu/777901.html
