温馨提示×

JMeter Ubuntu使用技巧有哪些

小樊
42
2026-01-03 06:43:53
栏目: 智能运维

Ubuntu 上使用 JMeter 的实用技巧

一 环境准备与安装

  • 安装 JDK(Ubuntu 推荐 OpenJDK 11 或更高版本):sudo apt-get install openjdk-11-jdk-headless;验证:java -version。
  • 安装 JMeter:下载官方压缩包,解压至 /usr/local/jmeter,建议配置环境变量(/etc/profile 或 ~/.bashrc):
    export JMETER_HOME=/usr/local/jmeter/apache-jmeter-5.x
    export PATH=$JMETER_HOME/bin:$PATH
    使配置生效:source /etc/profile 或 source ~/.bashrc;验证:jmeter -v。
  • 无头环境建议安装字体以避免生成报告时中文乱码:sudo apt-get install fonts-wqy-zenhei

二 非 GUI 运行与报告生成

  • 基本压测命令:
    jmeter -n -t /path/test.jmx -l /path/result.jtl
    说明:-n 非 GUI;-t 指定脚本;-l 保存结果。
  • 生成 HTML 报告(需 JMeter 3.0+):
    jmeter -n -t test.jmx -l result.jtl -e -o /path/report
    报告会输出到指定目录(需为空或可写)。
  • 常用命令行选项:-h 帮助;-r 远程执行;-H 代理主机;-P 代理端口。
  • 建议将常用命令写成脚本,便于复用与 CI 集成。

三 常用测试技巧

  • 参数化:使用 CSV Data Set Config 读取外部数据,避免硬编码。
  • 集合点:使用 Synchronizing Timer 让指定数量线程在同一时刻发起请求,制造峰值。
  • 断言与校验:添加 Response Assertion 并用 Assertion Results 监听器自动判定。
  • 结果查看:压测时避免 View Results Tree(高开销),优先用 Aggregate ReportSummary Report
  • 逻辑控制器与表达式:在控制器中使用 __jexl3 等函数,注意字符串需加引号,例如:
    ${__jexl3(‘${变量名}’==‘xxxx’,)}。
  • 代理录制:使用 HTTP(S) Test Script Recorder 录制,并在浏览器/客户端安装 CA 证书;过滤掉 .css/.png 等静态资源以减少采样。

四 分布式压测要点

  • 环境与版本:控制机与代理机尽量保持 Java/JMeter 版本一致
  • 生成密钥:在控制机 JMeter/bin 执行 create-rmi-keystore.sh,将生成的 rmi_keystore.jks 复制到各代理机相同目录。
  • 配置 SSL:在控制机与代理机的 jmeter.properties 中设置 server.rmi.ssl.disable=true(取消注释)。
  • 主机地址:在控制机 jmeter.properties 设置 remote_hosts=代理机IP:1099;在代理机启动:
    jmeter-server -D java.rmi.server.hostname=代理机IP
  • 常见坑:若从机日志出现连接被拒绝到 127.0.1.1,需在控制机的 system.properties 增加
    java.rmi.server.hostname=控制机IP,确保从机可回连。
  • 执行方式:控制机 GUI 选择“远程启动”,或命令行:
    jmeter -n -t test.jmx -R IP1,IP2 -l result.jtl
  • 资源与文件:CSV、JAR 等资源需在代理机存在且路径一致

五 性能优化与排错

  • 结果文件瘦身:在 jmeter.properties 仅保留必要字段,避免保存响应体(高 I/O):
    jmeter.save.saveservice.response_data=false;必要时开启 summariser.interval=10(更频繁的控制台摘要)。
  • HTTP 取样器:实现选 HttpClient4;设置超时(Connect Timeout 5000 ms、Response Timeout 按业务设置);启用 Keep-Alive;仅在需要时勾选 Retrieve All Embedded Resources
  • JVM 与 GC:编辑 jmeter.sh 的 HEAP,例如:HEAP=“-Xms2g -Xmx4g -XX:+UseG1GC”;非调试场景使用 -n 减少资源占用。
  • 避免 OOM:线程数并非越大越好,堆内存过小或线程过多都会导致 OutOfMemoryError;通常将 Xms 与 Xmx 设为一致以减少堆伸缩成本,并合理控制并发线程与采样器数量。
  • 代理与网络:若压测机走代理,在 HTTP 请求“高级”里配置代理;命令行可用 -H/-P 指定。

0