# :-: ApacheJMeter使用
## 一、添加线程组
一个性能测试请求负载是基于一个线程组完成的。一个测试计划必须有一个线程组。测试计划添加线程组非常简单。在测试计划右键弹出下拉菜单(添加-->Threads(Users)--->线程组)中选择线程组即可。 jmeter中 每个测试计划至少需要包含一个线程组,当然也可以在一个计划中创建多个线程组,在测试计划下面多个线程是并行执行的,也就是说这些线程组是同时被初始化并同时执行线程组下的Sampler的。![](https://box.kancloud.cn/6bd55667903b611fa06e77c6eb5e2a07_588x479.png)![](https://box.kancloud.cn/bca48109af4d1bb149446f55cf375d21_1358x612.png)线程组主要包含三个参数:线程数、准备时长(Ramp-Up Period(in seconds))、循环次数。
* **线程数**:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这里也就是设置多少个线程数。
* **准备时长**: 设置的虚拟用户数需要多长时间全部启动。如果线程数为20 ,准备时长为10 ,那么需要10秒钟启动20个线程。也就是每秒钟启动2个线程。
* **循环次数**:每个线程发送请求的次数。如果线程数为20 ,循环次数为100 ,那么每个线程发送100次请求。总请求数为20\*100=2000 。如果勾选了“永远”,那么所有线程会一直发送请求,一到选择停止运行脚本。
> 当前配置为1秒启动300个线程发起请求,并且循环10次
## 二、添加HTTP请求
添加完成线程组后,在线程组上右键菜单(添加--->Sampler--->HTTP请求)选择HTTP请求。对于jmeter来说,取样器(Sampler)是与服务器进行交互的单元。一个取样器通常进行三部分的工作:
1. 向服务器发送请求
2. 记录服务器的响应数据
3. 记录相应时间信息
![](https://box.kancloud.cn/a6b1a5ea2f7efab6eacdbf3fff1ffff3_815x310.png)![](https://box.kancloud.cn/dfcf3c32716e734024f13b247f602f05_1942x552.png)一个HTTP请求有着许多的配置参数,下面将详细介绍:
* **名称**:本属性用于标识一个取样器,建议使用一个有意义的名称。
* **注释**:对于测试没有任何作用,仅用户记录用户可读的注释信息。
* **服务器名称或IP** :HTTP请求发送的目标服务器名称或IP地址。
* **端口号**:目标服务器的端口号,默认值为80 。
* **协议**:向目标服务器发送HTTP请求时的协议,可以是http或者是https ,默认值为http 。
* **方法**:发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。
* **Content encoding** :内容的编码方式,默认值为iso8859
* **路径**:目标URL路径(不包括服务器地址和端口)
* **自动重定向**:如果选中该选项,当发送HTTP请求后得到的响应是302/301时,JMeter 自动重定向到新的页面。
* **Use keep Alive** : 当该选项被选中时,jmeter 和目标服务器之间使用 Keep-Alive方式进行HTTP通信,默认选中。
* **Use multipart/from-data for HTTP POST** :当发送HTTP POST 请求时,使用Use multipart/from-data方法发送,默认不选中。
* **同请求一起发送参数** : 在请求中发送URL参数,对于带参数的URL ,jmeter提供了一个简单的对参数化的方法。用户可以将URL中所有参数设置在本表中,表中的每一行是一个参数值对(对应RUL中的 名称1=值1)。
> 当前配置为发送post请求到 [http://localhost:9900/api-uaa/oauth/test?str=test](http://localhost:9900/api-uaa/oauth/test?str=test)
## 三、添加监听器(Listener)
脚本的主要部分设置完成后,需要通过某种方式获得性能测试中的测试结果,在本例中,我们关心的是请求的响应时间。 Jmeter 中使用监听器元件收集取样器记录的数据并以可视化的方式来呈现。Jmeter有各种不同的监听器类型,因为上HTTP请求,我们可在添加聚合报告,更为直观的查看测试结果。 添加聚合报告,右键点击线程组,在弹的菜单(添加--->监听器--->聚合报告)中选择聚合报告。![](https://box.kancloud.cn/ecb477cadf5065772bf1c9222200297a_827x390.png)
## 四、运行脚本
点击工具栏上的运行按钮,或者点击菜单栏“ 运行--->启动 ” 或者使用快捷键ctrl+r 来运行程序![](https://box.kancloud.cn/551a99d08df773ba8b6a20f69d1474ca_659x261.png)
## 五、聚合报告分析
![](https://box.kancloud.cn/39b56c30ad5982f0be9ec2d36e696e15_1963x288.png)参数说明:
* **Label**:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值
* **#样本**:请求数,表示这次测试中一共发出了多少个请求,如果模拟300个用户,每个用户迭代10次,那么这里显示3000
* **平均值**:平均响应时间,默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,以Transaction 为单位显示平均响应时间
* 中位数:也就是 50% 用户的响应时间
* **90%百分位**:90% 用户的响应时间
* **95%百分位**:95% 用户的响应时间
* **99%百分位**:99% 用户的响应时间
* **最小值**:最小响应时间
* **最大值**:最大响应时间
* **异常%**:错误请求数/请求总数
* **吞吐量**:默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数
* **接收KB/Sec**:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec
* **发送KB/Sec**:每秒从服务器端发送的数据量
- 项目介绍
- 项目声明
- 项目简介
- 架构设计
- 项目亮点功能介绍
- 技术栈介绍
- 核心功能
- 运行环境
- 项目更新日志
- 文档更新日志
- F&Q
- 部署教程
- 环境准备
- JDK安装
- JDK1.8,17共存
- maven
- 分布式缓存Redis
- 单机版
- 集群
- 注册&配置中心alibaba/nacos
- 介绍
- Nacos安装
- Nacos配置中心
- Nacos注册发现
- Nacos生产部署方案
- 服务监控-BootAdmin
- 基本介绍
- 如何使用
- 整合Admin-Ui
- 客户端配置
- 链路追踪
- 基本介绍
- SkyWalking-1
- Skywalking-1
- 消息队列
- Kafka
- docker安装kafka
- Linux集群
- Maven私服
- nexus安装部署
- nexus使用介绍
- 全文搜索elasticsearch
- windows集群搭建
- docker安装es
- ElasticHD
- linux集群部署
- 统一日志解决方案
- 日志解决方案设计
- 介绍与相关资料
- ELK安装部署
- elasticsearch 7.5
- logstash-7.5
- kibana-7.5
- filebeat
- 服务监控-Prometheus
- Prometheus安装配置
- Prometheus介绍
- grafana
- 持续集成部署CICD
- 自动化部署Jenkins
- 安装部署win
- 打包发布远程执行
- 安装部署linux
- jenkins+gitlab+docker容器化工程自动化部署
- Git
- CICD说明
- 阿里云效
- CentOS_MYSQL安装
- docker
- 安装
- Docker安装Nginx
- Docker部署启动springboot
- dockerCompose
- harbor
- Docker私有镜像仓库
- Portainer
- Docker远程连接设置
- 打包工程
- 必要启动模块
- 核心模块
- 登录认证
- 缓存功能
- 日志模块
- 分布式锁
- 消息队列
- 异常处理
- 系统接口
- 参数验证
- es检索
- 数据导出
- 系统设计
- 系统总体架构
- 扩展模块(可选)
- 限流熔断alibaba/sentinel
- 使用Sentinel实现gateway网关及服务接口限流
- Sentinel使用Nacos存储规则及同步
- 服务调用Feign
- Feign基本介绍
- 如何使用
- 负载均衡
- 请求超时
- 请求拦截器
- 分布式任务调度
- XXL-JOB
- 分布式事务
- TX-LCN
- Seata
- Seata原理解析
- 数据库分库分表
- swagger文档
- 分布式ID生成器解决方案
- 服务网关CloudGateway
- 基本介绍
- 使用网关
- 路由配置
- 全局过滤器
- 服务认证授权架构设计
- 认证服务流程
- 授权服务流程
- 系统幂等性设计与实践
- 分布式日志链路跟踪
- 实时搜索系统设计
- 应用性能
- 压力测试工具
- Apache JMeter介绍和安装
- ApacheJMeter使用
- JVM
- JVM性能调优
- 常见JVM内存错误及解决方案
- JVM 分析工具详解
- Spring Cloud性能调优
- Linux运维
- Linux 常用命令
- Linux开启端口