# :-: ApacheJMeter使用
## 一、添加線程組
一個性能測試請求負載是基于一個線程組完成的。一個測試計劃必須有一個線程組。測試計劃添加線程組非常簡單。在測試計劃右鍵彈出下拉菜單(添加-->Threads(Users)--->線程組)中選擇線程組即可。????jmeter中?每個測試計劃至少需要包含一個線程組,當然也可以在一個計劃中創建多個線程組,在測試計劃下面多個線程是并行執行的,也就是說這些線程組是同時被初始化并同時執行線程組下的Sampler的。線程組主要包含三個參數:線程數、準備時長(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. 記錄相應時間信息
一個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請求,我們可在添加聚合報告,更為直觀的查看測試結果。????添加聚合報告,右鍵點擊線程組,在彈的菜單(添加--->監聽器--->聚合報告)中選擇聚合報告。
## 四、運行腳本
點擊工具欄上的運行按鈕,或者點擊菜單欄“?運行--->啟動?”?或者使用快捷鍵ctrl+r?來運行程序
## 五、聚合報告分析
參數說明:
* **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開啟端口