『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…...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
Java毕业设计:WML信息查询与后端信息发布系统开发
JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息࿰…...
数据分析六部曲?
引言 上一章我们说到了数据分析六部曲,何谓六部曲呢? 其实啊,数据分析没那么难,只要掌握了下面这六个步骤,也就是数据分析六部曲,就算你是个啥都不懂的小白,也能慢慢上手做数据分析啦。 第一…...
二叉树-144.二叉树的前序遍历-力扣(LeetCode)
一、题目解析 对于递归方法的前序遍历十分简单,但对于一位合格的程序猿而言,需要掌握将递归转化为非递归的能力,毕竟递归调用的时候会调用大量的栈帧,存在栈溢出风险。 二、算法原理 递归调用本质是系统建立栈帧,而非…...
C++ Saucer 编写Windows桌面应用
文章目录 一、背景二、Saucer 简介核心特性典型应用场景 三、生成自己的项目四、以Win32项目方式构建Win32项目禁用最大化按钮 五、总结 一、背景 使用Saucer框架,开发Windows桌面应用,把一个html页面作为GUI设计放到Saucer里,隐藏掉运行时弹…...
解密鸿蒙系统的隐私护城河:从权限动态管控到生物数据加密的全链路防护
摘要 本文以健康管理应用为例,展示鸿蒙系统如何通过细粒度权限控制、动态权限授予、数据隔离和加密存储四大核心机制,实现复杂场景下的用户隐私保护。我们将通过完整的权限请求流程和敏感数据处理代码,演示鸿蒙系统如何平衡功能需求与隐私安…...




