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 上传 .jmx 与 CSV 数据文件。
二 单机非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 慢查询/连接数 等;压测机自身资源也需监控以避免成为瓶颈。