『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…...

SQL查询优化---如何查询截取分析
慢查询日志 1、慢查询日志是什么 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。 具体指运行时间超过long_query_time值的…...

vue3基础流程
目录 1. 安装和创建项目 2. 项目结构 3. 主要文件解析 3.1 main.js 3.2 App.vue 4. 组件和Props 5. 事件处理 6. 生命周期钩子 7. Vue 3的Composition API 8. 总结和结论 响应式系统: 组件化: 易于学习: 灵活性: 社…...

Vue 数据绑定 和 数据渲染
目录 一、Vue快速入门 1.简介 : 2.MVVM : 3.准备工作 : 二、数据绑定 1.实例 : 2.验证 : 三、数据渲染 1.单向渲染 : 2.双向渲染 : 一、Vue快速入门 1.简介 : (1) Vue[/vju/],是Vue.js的简称,是一个前端框架,常用于构建前端用户…...

【原创】解决Kotlin无法使用@Slf4j注解的问题
前言 主要还是辟谣之前的网上的用法,当然也会给出最终的使用方法。这可是Kotlin,关Slf4j何事!? 辟谣内容:创建注解来解决这个问题 例如: Target(AnnotationTarget.CLASS) Retention(AnnotationRetentio…...

CDN是如何实现全球节点同步的
当谈到内容交付网络(Content Delivery Network,CDN)加速时,我们必须了解CDN是如何实现全球节点同步的。CDN是一种网络架构,通过将内容分发到全球各地的服务器节点,以降低用户访问网站或应用程序时的延迟和提…...

Centos7 Linux系统下生成https的crt和key证书
linux下生成https的crt和key证书 步骤如下: x509证书一般会用到三类文,key,csr,crt Key 是私用密钥openssl格,通常是rsa算法。 Csr 是证书请求文件,用于申请证书。在制作csr文件的时,必须使…...

性能测试工具——Jmeter的安装【超详细】
目录 1、性能测试工具:JMeter和LoadRunner对比 2、为什么学习JMeter? 3、JMeter环境搭建 3.1、安装JDK 3.2、下载安装JMeter 3.3、配置环境变量 2.4、启动验证JMeter是否安装成功 4、认识JMeter的目录结构 1)bin目录:存放…...

系列三十、Spring AOP vs AspectJ AOP
一、关系 (1)当在Spring中要使用Aspect、Before、After等注解时,需要添加AspectJ的相关依赖,如下 <dependency><groupId>cglib</groupId><artifactId>cglib</artifactId><version>3.1</…...

面向对象设计模式——策略模式
策略设计模式(Strategy Pattern)是一种行为型设计模式,它允许在运行时选择算法的行为。该模式定义了一系列算法,将每个算法封装到一个独立的类中,使它们可以相互替换。策略模式使算法独立于客户端而变化,客…...

Kubernetes - Ingress HTTP 负载搭建部署解决方案(新版本v1.21+)
在看这一篇之前,如果不了解 Ingress 在 K8s 当中的职责,建议看之前的一篇针对旧版本 Ingress 的部署搭建,在开头会提到它的一些简介Kubernetes - Ingress HTTP 负载搭建部署解决方案_放羊的牧码的博客-CSDN博客 开始表演 1、kubeasz 一键安装…...