温馨提示×

JMeter在CentOS上的压力测试方法

小樊
38
2025-12-21 17:50:02
栏目: 智能运维

在CentOS上使用JMeter进行压力测试

一 环境准备与安装

  • 安装 Java 8(JMeter 5.x 建议使用 JDK 1.8):
    • 安装 OpenJDK:sudo yum install -y java-1.8.0-openjdk-devel
    • 验证:java -version
  • 安装 Apache JMeter(以 5.4.3 为例):
    • 下载并解压:wget https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.4.3.tgz && tar -zxvf apache-jmeter-5.4.3.tgz -C /usr/local/
    • 配置环境变量(/etc/profile):
      • export JMETER_HOME=/usr/local/apache-jmeter-5.4.3
      • export PATH=$JMETER_HOME/bin:$PATH
    • 使配置生效:source /etc/profile
    • 验证:jmeter -v
  • 上传脚本与数据文件(可选):yum install -y lrzsz 后使用 rz 上传 .jmxCSV 数据文件。

二 单机非GUI压测与结果查看

  • 执行压测(非GUI):
    • 基本:jmeter -n -t /path/to/test.jmx -l /path/to/results.jtl
    • 生成 HTML 报告:jmeter -n -t /path/to/test.jmx -l /path/to/results.jtl -e -o /path/to/report
    • 仅从既有结果生成报告:jmeter -g /path/to/results.jtl -o /path/to/report
  • 结果文件与报告要点:
    • .jtl 为原始结果(CSV 格式),可用 Excel/文本查看,也可导入 JMeter 生成图表报告。
    • HTML 报告位于 -o 指定目录的 index.html,便于分享与归档。

三 分布式压测 Master-Slave

  • 架构说明:一台 Controller/Master 控制多台 Agent/Slave 发压,提升总并发能力。
  • 配置步骤:
    • 在所有 Agent 的 JMETER_HOME/bin/jmeter.properties 中设置:
      • server.rmi.localport=1099
      • server.rmi.ssl.disable=true
    • 启动 Agent(后台):nohup $JMETER_HOME/bin/jmeter-server -Djava.rmi.server.hostname=<AGENT_IP> &
    • 在 Controller 的 jmeter.properties 中配置 remote_hosts=<AGENT1_IP>:1099,<AGENT2_IP>:1099
    • 在 Controller 发起压测:
      • 指定节点:jmeter -n -t test.jmx -l result.jtl -R <AGENT1_IP>:1099,<AGENT2_IP>:1099
      • 使用配置文件中全部节点:jmeter -n -t test.jmx -l result.jtl -r
  • 重要注意:
    • 各 Agent 上 CSV 数据文件路径必须一致且为绝对路径
    • 如需终止 Agent:ps -ef | grep jmeter-server | grep -v grep | awk '{print $2}' | xargs kill -9

四 脚本编写与关键配置

  • 核心元件与流程:
    • 线程组:设置并发用户数(Number of Threads)、Ramp-Up Period(启动所有线程的秒数)、循环次数/调度器(持续时间)。
    • HTTP 请求:配置协议、服务器/IP、端口、方法、路径、参数/消息体、编码、重定向、KeepAlive 等。
    • 定时器:如 Constant Timer(固定间隔)、或 Constant Throughput Timer 控制吞吐(注意其单位为 samples per minute,目标 QPS×60)。
    • 断言:如 响应断言 校验状态码/响应体,保证请求有效性。
    • 监听器:调试用 察看结果树(压测时建议关闭),统计用 聚合报告/Summary Report
  • 参数化与关联:
    • CSV Data Set Config 实现数据驱动(Filename 使用绝对路径,变量名与 ${变量名} 引用)。
    • 正则表达式提取器 等后置处理器处理动态关联数据。
  • 脚本规范与性能建议:
    • 每个取样器建议配置断言;非调试时禁用察看结果树;减少不必要的监听器以降低压测机开销。
    • 需要更高并发时优先分布式压测;合理设置线程数、Ramp-Up、循环/持续时间,逐步加压观察拐点。

五 监控与结果分析

  • 关键指标与含义(聚合报告/HTML 报告):
    • Label:请求名称
    • #Samples:总请求数
    • Average/Median/90%/95%/99% Line:平均/中位数/分位响应时间
    • Min/Max:最小/最大响应时间
    • Error%:错误率
    • Throughput:吞吐量(每秒完成请求数,近似 TPS
    • Received/Sent KB/sec:网络吞吐
  • 被压与压测机监控要点:
    • 关注被压服务的 CPU、JVM 内存/GC,以及 延迟分布(如 Nginx)Redis 主从资源、MySQL 慢查询/连接数 等;压测机自身资源也需监控以避免成为瓶颈。

0