温馨提示×

如何用CentOS运行JMeter并发测试

小樊
35
2025-10-15 14:00:19
栏目: 智能运维

1. 准备工作:安装Java环境
JMeter是基于Java开发的工具,需先安装Java 8及以上版本。在CentOS终端执行以下命令安装OpenJDK 8:

sudo yum install java-1.8.0-openjdk-devel -y 

安装完成后,验证Java版本:

java -version 

需显示类似openjdk version "1.8.0_XXX"的信息,确保Java环境正常。

2. 安装JMeter
有两种常见安装方式:

  • 手动下载安装:访问Apache JMeter官网下载最新稳定版(如apache-jmeter-5.6.3.tgz),解压至指定目录(如/opt/jmeter):
    wget https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.6.3.tgz tar -xzf apache-jmeter-5.6.3.tgz -C /opt/ sudo mv /opt/apache-jmeter-5.6.3 /opt/jmeter 
  • YUM仓库安装(可选):创建JMeter仓库文件/etc/yum.repos.d/jmeter.repo,内容如下:
    [jmeter] name=JMeter Repository baseurl=https://dl.bintray.com/apache//jmeter/binaries/ enabled=1 gpgcheck=0 
    执行sudo yum install jmeter -y完成安装。

3. 配置JMeter环境变量
为方便全局使用JMeter命令,需将JMeter的bin目录添加到系统PATH中。编辑~/.bashrc文件:

vi ~/.bashrc 

在文件末尾添加:

export PATH=$PATH:/opt/jmeter/bin 

保存后执行source ~/.bashrc使配置生效。验证JMeter命令是否可用:

jmeter -v 

应显示JMeter版本信息。

4. 创建JMeter并发测试脚本
使用JMeter GUI创建测试脚本(后续可通过命令行运行):

  • 添加线程组:右键“测试计划”→“添加”→“Threads (Users)”→“线程组”,配置以下关键参数:
    • 线程数:模拟的并发用户数(如100);
    • Ramp-Up Period:线程启动的时间间隔(如10秒,表示10秒内逐步启动100个线程);
    • 循环次数:每个线程执行的请求次数(如“永远”或固定次数,配合调度器使用可实现持续压测)。
  • 添加HTTP请求:右键线程组→“添加”→“Sampler”→“HTTP请求”,配置请求的URL、方法(GET/POST)、参数等。
  • 添加监听器:右键线程组→“添加”→“Listener”→“聚合报告”(查看响应时间、吞吐量等指标)、“查看结果树”(调试时查看请求详情,正式压测时建议禁用以减少资源消耗)。

5. 非GUI模式运行并发测试
正式压测时,务必使用非GUI模式(-n)以降低资源消耗。基本命令格式:

jmeter -n -t /path/to/test_plan.jmx -l /path/to/results.jtl 
  • -n:非GUI模式;
  • -t:指定测试脚本路径(如/opt/jmeter/script/test.jmx);
  • -l:指定结果文件路径(如/opt/jmeter/results.jtl,用于后续分析)。

常用高级参数

  • 动态设置并发数:通过-J参数覆盖脚本中的线程数(需在脚本中用${__P(load.concurrency)}定义属性),例如:
    jmeter -n -t test.jmx -l results.jtl -Jload.concurrency=200 
  • 持续压测:结合调度器设置持续时间(-Jload.duration),例如持续5分钟(300秒)的200并发测试:
    jmeter -n -t test.jmx -l results.jtl -Jload.concurrency=200 -Jload.duration=300 -Jload.count=-1 
    load.count=-1表示无限循环,由调度器的持续时间控制结束)。

6. 监控系统资源
压测过程中,需监控CentOS服务器的资源使用情况(CPU、内存、磁盘I/O、网络),避免因资源瓶颈影响测试结果。常用命令:

  • 实时查看系统负载top(按1查看每个CPU核心的使用率,按M按内存排序);
  • 查看内存使用free -h
  • 查看磁盘I/Oiostat -x 1(需安装sysstat包:sudo yum install sysstat -y);
  • 查看网络流量iftop(需安装:sudo yum install iftop -y)。

7. 分析测试结果
测试完成后,使用JMeter GUI打开results.jtl文件(或在非GUI模式下添加-e -o /path/to/report生成HTML报告):

jmeter -g /opt/jmeter/results.jtl -o /opt/jmeter/report 
  • 聚合报告:查看平均响应时间、吞吐量(Requests/sec)、错误率等核心指标;
  • 查看结果树:调试时查看单个请求的详细响应(正式压测时建议禁用);
  • HTML报告:自动生成可视化报告(包含统计图表、错误信息等),便于分享和分析。

注意事项

  • 正式压测前,先在小并发下调试脚本(如1个线程、1次循环),确保脚本逻辑正确;
  • 避免在JMeter服务器上开启其他占用大量资源的程序(如数据库、Web服务),以免干扰测试结果;
  • 分布式压测(多台机器协同测试)可提升并发能力,需配置Master-Slave模式(参考JMeter官方文档)。

0