JMeter在CentOS中如何进行并发测试
小樊
39
2025-11-24 03:19:20
在CentOS上使用JMeter进行并发测试
一 环境准备与安装
安装 Java 8+ (JMeter 5.x 要求 Java 8 及以上):
执行:sudo yum install -y java-1.8.0-openjdk-devel
验证:java -version
下载并解压 Apache JMeter (建议放到 /opt ):
示例:wget https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.4.3.tgz
解压:tar -xzf apache-jmeter-5.4.3.tgz -C /opt/
软链:ln -s /opt/apache-jmeter-5.4.3 /opt/jmeter
配置环境变量(写入 ~/.bashrc 或 /etc/profile ):
export JMETER_HOME=/opt/jmeter
export PATH=$PATH:$JMETER_HOME/bin
使生效:source ~/.bashrc
验证安装:jmeter -v。
二 编写测试计划
在本地 GUI 创建并调试脚本(保存为 test_plan.jmx ),核心元件:
添加线程组 Thread Group :设置并发用户相关参数(见下一节)。
添加取样器 HTTP Request :配置协议、服务器名或 IP 、端口、方法、路径、参数等。
添加配置元件 HTTP Header Manager :如设置 Content-Type: application/json 。
添加监听器:调试用 View Results Tree ,聚合分析用 Aggregate Report 。
将 test_plan.jmx 上传到 CentOS (如 /opt/jmeter/script/ )。
三 并发关键参数与定时器
线程组关键字段与含义:
Number of Threads(users) :并发用户数(如 1000 )。
Ramp-Up Period(seconds) :在多少秒内启动全部线程(如 10 秒,表示逐步启动)。
Loop Count :每个线程循环次数;勾选 Forever 可持续运行。
勾选 Scheduler 可设置 Duration (持续时长)与 Startup delay (延迟启动)。
常见并发控制与误区:
误区:把线程数设为 100 、Ramp-Up 设为 1 秒,并不等于每秒只发 100 个请求;这仅表示在 1 秒内启动 100 个线程,之后以引擎能力尽可能快地发送请求。
精确控制每秒请求数(QPS):在线程组内添加 Constant Throughput Timer ,设置 Target throughput(samples per minute)= 60 × 目标QPS ;Calculate Throughput based on 选 all active threads 。
精确“同时发起”场景:在关键请求前添加 Synchronizing Timer ,设置 Number of Simulated Users to Group by (每组集结线程数)与 Timeout (超时毫秒)。
四 在CentOS上执行与监控
非 GUI 命令行执行(推荐):
基本:/opt/jmeter/bin/jmeter -n -t /opt/jmeter/script/test_plan.jmx -l /opt/jmeter/results/result.jtl
内存调优(示例将堆最大设为 2G ):/opt/jmeter/bin/jmeter -n -t test_plan.jmx -l result.jtl -J-Xmx2g
说明:-n 非 GUI,-t 指定脚本,-l 输出结果文件(CSV/JTL)。
资源与结果监控:
监控被测系统与被压机的 CPU、内存、磁盘 I/O、网络 ,避免资源成为瓶颈。
结果分析使用 Aggregate Report 、View Results Tree (非 GUI 运行后可将 .jtl 下载到本地 GUI 查看)。
五 分布式压测与扩展
适用场景:单机并发能力不足或需模拟更大规模用户时,使用 JMeter 分布式(Master/Slave) 。
基本步骤:
在所有 Slave 上启动 jmeter-server :/opt/jmeter/bin/jmeter-server
在 Master 的 jmeter.properties 配置 remote_hosts=slave1:1099,slave2:1099
Master 发起测试:/opt/jmeter/bin/jmeter -n -t test_plan.jmx -R slave1:1099,slave2:1099
如启用 RMI SSL ,可设置 server.rmi.ssl.disable=true;必要时开放 1099 端口(或关闭防火墙/安全组限制)。