『Jmeter入门万字长文』 | 从环境搭建、脚本设计、执行步骤到生成监控报告完整过程
『Jmeter入门万字长文』 | 从环境搭建、脚本设计、执行步骤到生成监控报告完整过程
- 1 Jmeter安装
- 1.1 下载安装
- 1.2 Jmeter汉化
- 1.2.1 临时修改
- 1.2.2 永久修改
- 1.3 验证环境
- 2 测试对象
- 2.1 测试对象说明
- 2.2 测试对象安装
- 2.2.1 下载安装
- 2.2.2 启动测试对象服务
- 2.2.3 访问测试对象
- 2.2.4 注意事项
- 2.2.5 其他参数
- 2.2.6 网页登录数据库
- 2.2.7 命令行连接数据库
- 3 明确测试目标
- 3.1 测试接口
- 3.2 测试数据
- 3.3 测试目标
- 4 Jmeter脚本设计
- 4.1 启动Jmeter
- 4.2 添加http信息头管理器
- 4.3 添加http请求默认值
- 4.4 添加线程组
- 4.5 添加http请求
- 4.6 添加查看结果树
- 4.7 运行调试
- 5 客户端安装jmeter-plugins-manager插件
- 5.1 下载jmeter-plugins-manager插件
- 5.2 jmeter-plugins-manager包配置
- 5.3 下载PerfMon插件并应用
- 5.4 添加PerfMon监听器
- 6 服务端配置ServerAgent
- 6.1 下载ServerAgent
- 6.2 配置ServerAgent
- 7 测试服务是否OK
- 8 Jmeter配置监控指标
- 9 GUI方式运行
- 10 非GUI运行
- 10.1 安装jmeter-plugins-cmd插件
- 10.2 命令行启动性能脚本
- 10.3 查看报告
- 10.4 命令行生成监控图片
- 10.5 命令行生成csv文件
『授人以鱼,不如授人以渔』
仅以此文赠送那些需要学习Jmeter入门的伙伴。
仅供学习和参考,转载请注明出处。
文章通俗易懂,虽然很长,但是一篇文章可帮大家快速了解Jmeter性能测试过程。
欢迎小伙伴阅读、指正和交流。
特别说明:
1、本文是一个Jmeter快速入门的一个完整过程;
2、可帮助快速了解Jmeter性能测试过程和Jmeter简单操作;
3、文中通过一个简单的实例把Jmeter从安装、汉化到基本操作进行了贯穿,仅作为学习参考。
1 Jmeter安装
1.1 下载安装
- 详细参考Jmeter安装配置详细教程;
- 简单总结下:
1、下载官网:Jmeter下载地址;
2、选择对应的版本;
3、安装JDK环境;
4、JDK环境变量配置;
5、Jmeter环境配置。
1.2 Jmeter汉化
1.2.1 临时修改
- 即设置后只对本次使用有效,重启后恢复默认语言。
- 选择
Options—>Choose Language—>选择其他语言(例如:Chinese(Simplified)简体中文)设置成功。重启Jmeter又会恢复英文。

1.2.2 永久修改
- 即永久性设置,设置后每次打开显示的语言都是一样的;
- 进入到
Jmeter的bin目录下,找到jmeter.properties文档; - 以记事本的方式打开查找
language,找到language=en的行
如下图,将en改为cn,并且去掉前面的#号,保存退出; - 重启
jmeter,语言设置成功。

1.3 验证环境
- 命令行输入:
jmeter,出现以下内容,表示OK;

2 测试对象
2.1 测试对象说明
- 为了清晰的了解整个测试过程,我们使用
禅道开源版作为测试对象; - 后续会对其中的一两个接口使用
Jmeter进行测试; - Jmeter安装环境为
Windows,测试对象禅道安装在ubuntu下。
2.2 测试对象安装
2.2.1 下载安装
- 下载地址:禅道官网;
- 找到
Linux一键安装包:

- 点击下载后,使用
xftp上传到ubuntu上:

- 把上传到
ubuntu上的禅道安装包复制到/opt目录下:
sudo cp ZenTaoPMS-18.8-zbox_amd64.tar.gz /opt/
- 将安装包直接解压到
/opt目录下:
sudo tar -zxvf ZenTaoPMS-18.8-zbox_amd64.tar.gz

2.2.2 启动测试对象服务
禅道服务包括Apache和Mysql,启动命令如下。
- 启动所有服务:
/opt/zbox/zbox start

- 停止所有服务:
/opt/zbox/zbox stop - 重启所有服务:
/opt/zbox/zbox restart - 开机自动启动:以把
/opt/zbox/zbox restart加到操作系统的自启目录。
2.2.3 访问测试对象
- 禅道安装完并启动服务后,直接浏览器输入:
http://禅道服务器ip:apache端口。
特别注意:这里需要开放几个端口:
1、sudo ufw status查看开放的端口:
2、开放需要的端口:sudo ufw allow 端口
2.2.4 注意事项
- 如果网页无法访问,请先关闭禅道所在电脑的
防火墙和selinux再刷新网页访问试一下; - 使用云服务器请注意在安全组中开放
apache使用端口; - 禅道默认管理员帐号是
admin,密码123456; - 初次登陆请修改密码:

2.2.5 其他参数
- 如果不加任何参数执行
/opt/zbox/zbox会打印输出命令可用参数:
Usage: ./zbox {start|stop|status} [--aport=8080] [--mport=3307]
--aport参数 可以修改Apache的端口
--mport参数 可以修改Mysql的端口
2.2.6 网页登录数据库
- 禅道数据库管理用的是
adminer,但是为了安全,访问adminer的时候需要身份验证,需要运行sudo /opt/zbox/auth/adduser.sh来添加用户,如下命令:
# 进入脚本目录
cd /opt/zbox/auth# 执行添加用户的脚本
bash adduser.sh
This tool is used to add user to access adminer
Account: admin # 输入用户名
Password: # 输入密码
Adding password for user admin

- 打开浏览器,输入
http://禅道服务的ip:apache端口点击“数据库管理”:

- 输入用户名和密码:

- 网页直接显示登录界面:

1、系 统:默认选择MySQL。
2、服务器:127.0.0.1:MySQL端口
(MySQL端口启用的是3306,那么就填写127.0.0.1:3306。
注意:ip只能写127.0.0.1)
3、用户名:root(禅道默认的数据库用户名是root) 密 码:123456(禅道默认的数据库密码是123456) 数据库:zentao。
- 登陆成功如下:

2.2.7 命令行连接数据库
- 登录数据库:
/opt/zbox/bin/mysql -u root -P MySQL端口 -p(如:/opt/zbox/bin/mysql -u root -P 3306 -p)- 导入数据库:
/opt/zbox/bin/mysql -u root -P MySQL端口 -p 要导入的库名 < XXXX.sql (如:/opt/zbox/bin/mysql -u root -P 3306 -p zentao < zentao.sql)
3 明确测试目标
3.1 测试接口
- 登陆禅道后,点击
更多-后台-二次开发:

- 可以看到接口信息,我们这里简单就拿
token来验证:

3.2 测试数据
- 将以下数据中的地址、用户名等参数改为自己的即可:
# 请求地址:
http://172.18.126.87:80/zentao/api.php/v1/tokens# 请求方式:
POST# 请求参数:
{"account": "admin", "password": "Kenwaytest123456"}
3.3 测试目标
- 使用登陆接口,对登陆接口进行压测;
- 并发20,持续时间为5分钟。
4 Jmeter脚本设计
4.1 启动Jmeter
cmd命令行输入:jmeter即可打开图形化界面:

4.2 添加http信息头管理器
测试计划-右键-添加-配置元件-HTTP信息头管理器,如下:

- 参数设置如下:

4.3 添加http请求默认值
测试计划-右键-添加-配置元件-HTTP请求默认值,如下:

- 设置参数如下:

4.4 添加线程组
测试计划-右键-添加-线程(用户)-线程组,如下:

- 设置参数如下:

4.5 添加http请求
线程组-右键-添加-取样器-http请求,如下:

- 设置参数如下:

4.6 添加查看结果树
测试计划-右键-添加-监听器-查看结果树,如下:

4.7 运行调试
- 点击运行按钮,查看返回数据是否ok,如下:

- 如果返回如下
token值,则说明说有设置是ok的:

5 客户端安装jmeter-plugins-manager插件
- 我们需要关注被压测服务器的
cpu、内存、磁盘、网络等指标参数的浮动来衡量压测服务器的能力; - 可以通过在
jmeter客户端集成jmeter-plugins-manager插件,在服务端部署插件serverAgent来实时监控被压测服务器的性能;
5.1 下载jmeter-plugins-manager插件
- 下载插件管理包,地址:插件包管理地址;

5.2 jmeter-plugins-manager包配置
- 将下载的
jar包添加到Jmeter中; - 即将其放置到
jmeter的安装目录lib\ext下:

5.3 下载PerfMon插件并应用
- 重启
Jmeter; - 点击选项-插件管理器:

PerfMon(Servers Performance Monitoring)选项,点击右下角的Apply Changes and Restart JMeter按钮应用:

5.4 添加PerfMon监听器
测试计划-右键-添加-监听器-jp@gc-PerfMon Metrics Collector,如下:

6 服务端配置ServerAgent
对linux服务器的服务进行压测时,服务器的运行情况可以通过添加插件serverAgent来观察,可以实时监控性能指标。
6.1 下载ServerAgent
- 下载S
erverAgent-2.2.3.zip,下载官网地址;

6.2 配置ServerAgent
-
下载后上传到
ubuntu上,比如目录soft下:

-
解压缩:
sudo unzip ServerAgent-2.2.3.zip

-
进入到解压目录
ServerAgent-2.2.3下,直接运行./startAgent.sh启动;
特别注意:
1、默认启动端口为4444;
2、也可以使用命令指定端口启动(例如将指定TCP为5678,UDP指定为6789):./startAgent.sh --tcp-port 5678--udp-port 6789--sysinfo;
3、建议将此脚本写成shell脚本,授权chmod -R 777 XXX之后下次直接启动脚本程序。
- 运行
./startAgent.sh提示没有java环境,这个需要jre1.8以上版本:

- 输入
java按照提示的安装包进行安装即可:

- 启动服务:

7 测试服务是否OK
Windows下cmd执行以下命令,检查ServerAgent代理端口:
telnet 172.18.126.87 4444
- 如果进入以下界面说明4444端口是被开放的:

- 如果提示无法连接到4444端口,需要在ubuntu上开放4444端口:
sudo ufw allow 4444
8 Jmeter配置监控指标
- 在
jp@gc-PerfMon Metrics Collector上进行指标选择; - 点击
AddRow,然后在host的地方添加需要监控的服务器的主机域名或者IP,port填写端口,Metric to collect下拉选择监控的指标(CPU、Memory、Swap、Disks I/O、Network I/O等)

- 运行时如果报错:
ERROR: java.net.ConnectException: Connection refused: connect,需要检查端口,ip是否正确,另外设置本地防火墙策略,参考Jmeter监控服务器资源报错问题ERROR;
9 GUI方式运行
- 直接运行脚本,可以看到如下监控数据:

10 非GUI运行
- 性能测试时建议使用这种方式可以提升性能;
- 这种方法运行时将监控数据输出到指定文件,文件必修是
.jtl结尾;
10.1 安装jmeter-plugins-cmd插件
- 在插件管理器中勾选如图即可:

10.2 命令行启动性能脚本
- 创建报告存放路径,比如:
D:\A_jmeter_test\report; - 创建压测数据存放路径,比如:
D:\A_jmeter_test\jtl; - 脚本存放路径,比如:
D:\A_jmeter_test\登陆.jmx; - 命令行执行脚本命令为:
jmeter -n -t 脚本路径 -l jtl数据文件路径 -e -o 测试报告存放路径
- 比如:
jmeter -n -t D:\A_jmeter_test\登陆.jmx -l D:\A_jmeter_test\jtl\登陆.jtl -e -o D:\A_jmeter_test\report\
- 命令行运行以上命令如下:

10.3 查看报告
- 打开报告存放路径,比如:
D:\A_jmeter_test\report:

- 运行
index.html,如下:


10.4 命令行生成监控图片
- 新建存放图片的路径,比如
D:\A_jmeter_test\picture; - 命令行先执行
JMeterPluginsCMD.bat,看下这个命令有没有问题:

- 发现这个文件找不到,我们看下图片中的
D:\apache-jmeter-5.3\bin\\..\lib\cmdrunner-2.2.jar中的文件是否存在:

- 结果发现是
cmdrunner-2.3.jar而不是cmdrunner-2.2.jar,则需要修改JMeterPluginsCMD.bat文件; - 而
JMeterPluginsCMD.bat文件在D:\apache-jmeter-5.3\bin目录下:


- 完整的执行命令如下:
JMeterPluginsCMD.bat --generate-png 存放图片的路径 --input-jtl jtl数据文件路径 --plugin-type PerfMon --width 图片宽度 --height 图片高度
- 示例如下:
JMeterPluginsCMD.bat --generate-png D:\A_jmeter_test\picture\登陆.png --input-jtl D:\A_jmeter_test\jtl\登陆.jtl --plugin-type PerfMon --width 800 --height 600

- 生成的图片如下:

10.5 命令行生成csv文件
- 创建
csv文件存放路径,比如:D:\A_jmeter_test\csv; - 执行的命令为:
JMeterPluginsCMD.bat --tool Reporter --generate-csv 存放csv路径 --input-jtl 存放jtl数据文件路径 --plugin-type PerfMon
- 示例如下:
JMeterPluginsCMD.bat --tool Reporter --generate-csv D:\A_jmeter_test\csv\登陆.csv --input-jtl D:\A_jmeter_test\jtl\登陆.jtl --plugin-type PerfMon


相关文章:
『Jmeter入门万字长文』 | 从环境搭建、脚本设计、执行步骤到生成监控报告完整过程
『Jmeter入门万字长文』 | 从环境搭建、脚本设计、执行步骤到生成监控报告完整过程 1 Jmeter安装1.1 下载安装1.2 Jmeter汉化1.2.1 临时修改1.2.2 永久修改 1.3 验证环境 2 测试对象2.1 测试对象说明2.2 测试对象安装2.2.1 下载安装2.2.2 启动测试对象服务2.2.3 访问测试对象2.…...
Unity C#中LuaTable、LuaArrayTable、LuaDictTable中数据的增删改查
LuaTable、LuaArrayTable、LuaDictTable中数据的增删改查 介绍Lua表lua表初始化lua移除引用lua中向表中添加数据lua中表中移除数据lua表中连接数据lua表中数据排序获取lua表长度获取表中最大值 UnityC#中LuaTableUnityC#中LuaArrayTable、LuaDictTable、LuaDictTable<K,V>…...
Spring常见面试题
https://blog.csdn.net/a745233700/article/details/80959716?ops_request_misc%257B%2522request%255Fid%2522%253A%2522169847982516800213061720%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id169847982516800213061720&biz_id0&…...
通过Vue自带服务器实现Ajax请求跨域(vue-cli)
通过Vue自带服务器实现Ajax请求跨域(vue-cli) 跨域 原理:从A页面访问到B页面,并且要获取到B页面上的数据,而两个页面所在的端口、协议和域名中哪怕有一个不对等,那么这种行为就叫跨域。注意:类…...
Vue2-计算属性的用法
题记 vue2计算属性的用法 反转字符串 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>实例</title> <script src"https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script> </hea…...
SM3加密udf
SM3加密udf maven xml <dependencies> <!-- 配置日志 --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.5</version> </dep…...
ce从初阶到大牛(两台主机免密登录)
一、配置ssh远程连接 实现两台linux主机之间通过公钥验证能够互相实现免密登陆 1.确认服务程序是否安装 rpm -qa | grep ssh 2.是否启动 ps -aux | grep ssh 3.生成非对称公钥 ssh-keygen -t rsa 4.公钥发送到客户端 cd /root/.ssh/ ssh-copy-id root192.168.170.134 因为…...
CS224W2.3——传统基于特征的方法(图层级特征)
前两篇中我们讨论了节点层级的特征表示、边层级的特征表示: CS224W2.1——传统基于特征的方法(节点层级特征)CS224W2.2——传统基于特征的方法(边层级特征) 在这篇中,我们将重点从整个图中提取特征。换句话说,我们想要描述整个图结构的特征…...
【CSS】包含块
CSS规范中的包含块 包含块的内容: 元素的尺寸和位置,会受它的包含块所影响。 对于一些属性,例如 width, height, padding, margin,绝对定位元素的偏移值(比如 position 被设置为 absolute 或 fixed)&…...
[SpringCloud] Nacos 简介
目录 一、Nacos,启动! 1、安装 Nacos 2、运行 Nacos 3、Nacos 服务注册 二、Nacos 服务多级存储模型 1、服务跨集群分配 2、NacosRule 负载均衡(优先本地) 3、服务实例的权重设置 4、环境隔离 三、Nacos 注册中心细节分…...
TypeScript - 字符串的字面类型
啥是字面量类型 字面量类型,是限制了一个字符串变量的取值范围只能某几个固定字符串中的一个。 我感觉 与枚举类型有异曲同工之妙。 字符串字面量类型有啥用 没啥用。 就是来限制字符串变量不能随便赋值的。 定义一个我看看 让你读书,但是只有四本书可以…...
CRM客户管理系统源码 带移动端APP+H5+小程序
CRM客户管理系统源码 带移动端APPH5小程序 开发环境: thinkphp mysql 功能介绍: 1、 办公管理:审批管理、工作报告、日程管理、办公审批、公告管理 2、 客户管理:我的客户、客户列表、成交客户、行业类别、预查、地区列表、客户状态、客…...
Mac版好用的Git客户端 Fork 免激活
Fork是一款强大的Git客户端软件,在Mac和Windows操作系统上都可以使用。汇集了众多先进的功能和工具,可以帮助用户更方便地管理和控制Git仓库。 Fork的界面简洁直观,易于使用。它提供了许多高级的Git功能,如分支管理、合并、提交、…...
有一个带头结点的单链表L,设计一个算法使其元素递增有序
有一个带头结点的单链表L,设计一个算法使其元素递增有序 代码思路: 我这里懒得搞那个指针了,直接遍历一遍链表,把链表的元素复制到数组arr里面 对数组A进行一下排序,排完之后再把元素复制到L里面。 至于排序你用啥算…...
JAVA将EEE MMM dd HH:mm:ss zzz yyyy日期格式化为yyyy-MM-dd HH:mm:ss形式
1、将EEE MMM dd HH:mm:ss zzz yyyy格式的数据转换成yyyy-MM-dd HH:mm:ss 代码如下 public static void main(String[] args) throws ParseException {String dateStr "Mon Oct 26 15:19:15 CST 2020";DateFormat cstFormate new SimpleDateFormat("yyyy-MM…...
【Qt】文件系统
文章目录 文件系统文件操作案例:显示路径到标题框,显示内容到文本框对文件进行写操作获取文件相关信息 文件系统 Qt 通过QIODevice提供了对 I/O 设备的抽象,这些设备具有读写字节块的能力,下面是 I/O 设备的类图: QIO…...
PostgreSQL 基础知识
执行环境: psql 1. 创建一个表格 CREATE TABLE customers ( customer_id serial PRIMARY KEY,firstname VARCHAR(100) NOT NULL,lastname VARCHAR(100) NOT NULL,username VARCHAR(50) UNIQUE NOT NULL,password VARCHAR(50) NOT NULL,email VARCHAR(255) UNIQUE …...
基于 ResNet18 架构使用 deformable convolution的车道线检测
下面是一个基于关键点的车道线检测网络的 PyTorch 代码示例,其中使用了 deformable convolution。该代码示例基于 ResNet18 架构,可以根据实际情况进行修改。 首先,需要导入必要的库和模块: import torch import torch.nn as nn…...
C++in/out输入输出流[IO流]
文章目录 1. C语言的输入与输出2.C的IO流2.1流的概念2.2CIO流2.3刷题常见while(cin >> str)重载强制类型转换运算符模拟while(cin >> str) 2.4C标准IO流2.5C文件IO流1.ifstream 1. C语言的输入与输出 C语言用到最频繁的输入输出方式就是scanf ()与printf()。 scanf…...
MongoDB的安装
MongoDB的安装 1、Windows下MongoDB的安装及配置 1.1 下载Mongodb安装包 下载地址: https://www.mongodb.com/try/download http://www.mongodb.org/dl/win32 MongoDB Windows系统64位下载地址:http://www.mongodb.org/dl/win32/x86_64 MongoDB W…...
从零开始:5个必知的图像篡改检测数据集下载与使用指南(附避坑提醒)
从零开始:5个必知的图像篡改检测数据集下载与使用指南(附避坑提醒) 当你第一次接触图像篡改检测领域时,最令人头疼的往往不是算法本身,而是如何找到合适的数据集。我曾见过不少研究生花费数周时间在各大论坛和GitHub仓…...
AI写教材必备!掌握这些技巧,低查重教材生成不再是难题!
教材初稿完成后的修改困境与 AI 工具的帮助 教材的初稿终于完成,但对其进行修改和优化的过程真的是一种折磨!反复通读全文,要找到逻辑上的漏洞和知识点的错误,简直耗费了不少时间。而且,调整一个章节的结构࿰…...
⚔️ 易经+人性+数学·三位一体终极博弈|算法裁判·话语权殖民·三色审计逻辑链闭环 v2.0|UID9622
《道德经》第三十六章:“将欲夺之,必固予之。” —— 先给你一把裁判的椅子,再告诉你,坐上去的人才有资格说话。🧭 这篇文章在干嘛⚔️ 这不是针对任何人的。 这是一场博弈论的推演——用易经的智慧、人性的逻辑、数学…...
Wan2.2-I2V-A14B私有部署避坑指南:基于RTX4090D镜像的保姆级教程
Wan2.2-I2V-A14B私有部署避坑指南:基于RTX4090D镜像的保姆级教程 1. 开篇:为什么选择私有部署? 当你第一次接触Wan2.2-I2V-A14B这个强大的文生视频模型时,可能会被它的效果惊艳到。但随之而来的部署问题往往让人头疼——环境配置…...
WSL配置文件路径全解析:从.wslconfig到wsl.conf
1. WSL配置文件基础:为什么需要它们? 如果你刚开始使用Windows Subsystem for Linux(WSL),可能会对两种配置文件感到困惑:全局的.wslconfig和本地的wsl.conf。这两种文件就像是WSL世界的"遥控器"…...
DAMO-YOLO与TinyNAS WebUI实现微信小程序开发:实时手机检测实战
DAMO-YOLO与TinyNAS WebUI实现微信小程序开发:实时手机检测实战 用最简单的方法,让手机摄像头实时识别手机 1. 项目背景与价值 你有没有遇到过这样的场景:在图书馆需要检测学生是否违规使用手机,或者在会议室需要监控手机使用情况…...
OpenClaw+Phi-3-vision-128k-instruct:3步搭建个人知识图谱系统
OpenClawPhi-3-vision-128k-instruct:3步搭建个人知识图谱系统 1. 为什么选择这个组合? 上个月整理研究资料时,我发现自己陷入了一个典型的知识工作者困境:电脑里堆满了PDF、网页书签和零散的笔记,但真正需要调用某个…...
5步掌握高效API测试:从安装到协作的全流程指南
5步掌握高效API测试:从安装到协作的全流程指南 【免费下载链接】insomnia The open-source, cross-platform API client for GraphQL, REST, WebSockets, SSE and gRPC. With Cloud, Local and Git storage. 项目地址: https://gitcode.com/gh_mirrors/in/insomni…...
PlayIntegrityFix安全验证解决方案:从问题诊断到实战配置全指南
PlayIntegrityFix安全验证解决方案:从问题诊断到实战配置全指南 【免费下载链接】PlayIntegrityFix Fix Play Integrity (and SafetyNet) verdicts. 项目地址: https://gitcode.com/GitHub_Trending/pl/PlayIntegrityFix 一、验证困境与解决方案概述 Androi…...
光纤网络安全防御实战指南:从物理层威胁到智能防护体系
光纤网络安全防御实战指南:从物理层威胁到智能防护体系 【免费下载链接】PentestGPT Automated Penetration Testing Agentic Framework Powered by Large Language Models 项目地址: https://gitcode.com/GitHub_Trending/pe/PentestGPT 在数字化时代&#…...




