性能測試相關理解(一)

根據學習全棧測試博主的課程做的筆記

一、說明

若未特別說明,涉及術語都是jmeter來說,線程數,就是jmeter線程組中的線程數

在這里插入圖片描述

二、軟件性能是什么

1、用戶關注:響應時間

2、業務/產品關注:響應時間、支持多少并發數、對業務的處理能力

3、運維關注:響應時間(是否有超時的請求)、資源利用率、穩定性等

4、dba關注:響應時間(慢sql或者死鎖),關注數據庫的資源利用情況(表空間的資源使用情況)

5、開發關注:響應時間(代碼邏輯的處理快慢,特別是鎖,鎖的力度不合理導致后來的請求響應時間長)

6、架構師關注:架構是否涉及合理(是否具備擴展能力)

7、測試關注(關注6類用戶關注的):響應時間、處理能力(TPS)、穩定性、什么時候進行擴展等

三、幾個性能測試相關得概念

1、 負載測試:不同客戶端線程數下服務器處理的能力

客戶端線程數下即就是jmeter下的線程數
模擬客戶端向服務器發送壓力

2、容量測試:強調的是容量測試、業務(混合容量tps),當前支持的最大容量、對未來容量的規劃

數據庫容量即就是數據庫的數據量

3、遞增測試:強調的是遞增,連續遞增加壓,看服務器的處理能力

4、 強度測試:用大量的客戶端,并發線程看服務端表現情況

5、性能測試:在某個特點的硬件、軟件、網絡設計場景模擬并發請求,通過監控分析進行調優,達到性能測試目標

6、總結

前面的四種強調的是不同的性能測試方式,性能測試場景的設計。可以將四種測試設計在里面。負載測試(場景就是階梯加壓,每個階梯對應的就是客戶端的線程數,對應的負載,再測一個最大值。
遞增測試:連續階梯加壓。
強調測試:連續階梯加壓,測試最大值。

四、性能測試中的關鍵術語

1、 并發、線程、tps

1.1公司要求500并發、500并發表示什么?

1.2并發分類、以及線程、tps的關系

1.2.1絕對并發–狹義:表示服務端某一個時刻物理的請求數。處理的請求數和什么有關系?

如某一個服務器是16c,64g,某一個時刻處理多少請求和邏輯cpu有關系,實際測試時服務端做并發。

1.2.2相對并發-廣義/tps

某一個時間段內處理的請求數,相對并發才是真正服務器的處理能力。不是站在服務器邏輯cpu的角度。
平時的并發就是相對并發,就是tps。

tps就是每秒鐘處理多少個請求,1s是時間段。
為什么并發是tps?
解釋:并發=tps,需要站在客戶端和服務端的視角下。
上面兩個并發僅站在服務端的角度,tps是要站在客戶端和服務端的視角下。把并發分為客戶端并發和服務端并發。

很多都是認為客戶端jmeter處的線程數就是并發數.,其實沒啥問題,但是需要認定為客戶端并發,而并不是服務端并發。還把并發分為客戶端并發和服務端并發。

1.2.3客戶端并發

此處的jmeter中的線程數是模擬大量請求對服務端產生壓力,此時的數值在性能測試中是沒有參考意義的。

此處并不能說明值設計的越大,性能就越好。而是需要看服務器的處理情況(服務器的tps、成功率、響應時間)
一般說的并發說的是服務端的并發。

并發不等于線程數,為什么?
舉例:若每秒的線程數為10,每個線程數1s內可以完成10個事務,循環發10次請求。此處完成的請求是100個,看性能需要看服務端而不是客戶端,服務端相當于是10個線程,完成了10個事務,循環發了10個事務的請求,服務端都進行了處理。即并發–100,則tps是100。

線程是否是用戶 10個線程不等于10個用戶(虛擬用戶)
領導要求500并發,并不是說jmeter客戶線程數設置就是500.jmeter的線程數是可以隨意設置的最好的就是連續加壓,可以看到每個階梯的tps使用情況再看監控。

每個線程1s,階梯加壓到50個線程時tps就是500。
前提:tps服務器處理請求隨著jmeter線程數增加而線性增加。

壓測不僅要壓目標tps,還需要壓測出最大的tps.
50個線程已經達到500目標tps。假設在200個線程時,線程增加時,最大的目標tps則為2000,繼續加壓時,tps則下降,這時已經超過服務器的最大處理能力,請求都在排隊,響應時間增長。

所以如果一個系統的響應比較快,1個線程1s時間內可以完成10個事務,需要設置的線程數是小于客戶端jmeter的線程數。

并發:客戶端的并發只是為了模擬用戶給服務端加壓力,他是沒有參考意義的,是需要服務端的并發,服務端的并發是tps

線程是否=用戶?(虛擬用戶)

線程不等于用戶(為什么?
因為線程做了用戶的動作,線程的每一次迭代才稱為用戶)即jmeter處的循環次數,發一次請求服務端給一次響應,這個是迭代。

注冊場景:
1s內,1個線程可以發10次請求,注冊時用戶名需要不一樣,此時假設已經參數化并且參數是足夠多,1個線程1s可以發10次請求就相當于10個用戶進行注冊,10個線程就是發100個請求,即就是100個用戶進行注冊,100個用戶用戶名不同。并發用戶數此時是100,tps100,壓力線程數是10.

可以這么理解:
線程只是執行用戶的操作,線程的每一次迭代是模擬了用戶的操作。

事務(關注流程,整個流程就為請求,若不關注流程,一個請求就是一個事務就是)

在這里插入圖片描述

1.2.4服務端并發(站在業務層面,站在服務器的處理能力進行談并發)

客戶端并發只是為了向服務端發送壓力,并沒有什么參考意義。

服務端并發的:前提是需要保證事務的成功率,具體是多少,看行業要求,涉及到金錢事務的成功率是100%,涉及到其他一般是項目組定(如99.9%)

在這里插入圖片描述

1.2.5線程和tps的瞬時計算

線程和tps的瞬時計算,并不是整個的計算

此處表面3個線程,1s可以完成5次請求,3個線程即就是3*5=15,

tps=15=總請求數/并發時間=15/1s=35=3(1000ms/200ms)
總請求數/并發時間=線程數*(1000/rt每個請求的響應時間)
rt是瞬時值

2、QPS和TPS的區別

QPS(Query Per Second):每秒鐘的查詢
TPS(Transaction per Second)):每秒鐘的處理事務數

3、響應時間rt:判斷業務快慢的指標

正常的性能壓測響應時間都是從低到高
剛開始壓力小時,服務器都能進行處理,響應也比較快。隨著壓力越來越大,處理不過來,請求排隊。

3.1rt增加、表示開始出現性能瓶頸

3.2補充瓶頸分析

此處簡單介紹,后面詳細解釋

3.2.1簡單架構

對于簡單架構,一般是通過服務器的資源情況進行判斷是否出現瓶頸。

3.2.2復雜架構(微服務)

對于復雜架構
就需要進行去分解響應時間看什么地方耗時多。

對時間的分解的方式:日志打點計時器,通過日志去查看請求的時間,
對于微服務最后是:鏈路監控工具(skywalking)

在這里插入圖片描述

4、 線程、tps、rt三者的關系

4.1線程、tps、rt三者關系圖

jmeter線程數增加,發送的請求增加,剛開始都能處理,隨著增加線程逐漸增加,服務器的資源利用率就會增加(cpu、mem),此圖,tps隨著線程數的增加是線性增加,到了一定階段后,服務器出現了瓶頸后,響應時間開始增加,tps達到最大值后,tps增幅趨于平穩或者下降

在這里插入圖片描述

4.2連續階梯加壓場景設計圖(這個是用插件實現的)

圖上斜的就是啟動線程,啟動多少線程
啟動后又可以平穩的運行一段時間

在這里插入圖片描述

五、性能指標

怎么衡量系統的性能?以下指標

1、tps、rt、成功率

tps是用來衡量服務器的處理能力,而在jmeter中就是壓測那段時間內,總的請求數/壓測的時間=tps

rt:jmeter中有平均響應時間、90%、95%、99%的響應時間

成功率也有進行統計。

2、也可以加上技術指標:sql耗時不能超過200ms,fgc在多少時間范圍內不能超過多少次,服務器資源使用情況

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/42012.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/42012.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/42012.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深入解析 androidx.databinding.Bindable 注解

在現代 Android 開發中,數據綁定 (Data Binding) 是一個非常重要的技術。它使得我們能夠簡化 UI 和業務邏輯之間的連接,從而提高代碼的可讀性和維護性。在數據綁定中,Bindable 注解是一個關鍵部分,它幫助我們實現雙向數據綁定和自…

Apache Doris的分區與分桶原理解析

介紹 在 Apache Doris 中,“分區”和“分桶”是兩種用于管理和優化數據的技術,分別解決不同的數據存儲和查詢優化問題。 在 Doris 中,數據都以表(Table)的形式進行邏輯上的描述。 Row & Column 一張表包括行(Row)和列(Column): Row:即用戶的一行數據; Colu…

redis7新特性、源碼解析

版本:第2位版本號為奇數是非穩定版,偶數才是穩定版本https://download.redis.io/releases/ redis7新特性 multi-AOF: 7之前的版本AOF只有一個文件,現在有多個處于同一目錄的AOF文件RDB文件格式更新,不兼容老版本的RDB格式redis …

【車載開發系列】GIT安裝詳細教程

【車載開發系列】GIT安裝詳細教程 【車載開發系列】GIT安裝詳細教程 【車載開發系列】GIT安裝詳細教程一. GIT軟件概念二. GIT安裝步驟三. GIT安裝確認三. GIT功能使用1)Git Bash2)Git CMD3)Git FAQs4)Git GUI 一. GIT軟件概念 G…

數據庫系統原理 | 查詢作業1

整理自博主本科《數據庫系統原理》專業課自己完成的實驗課查詢作業,以便各位學習數據庫系統概論的小伙伴們參考、學習。 *文中若存在書寫不合理的地方,歡迎各位斧正。 專業課本: ? ———— 本次實驗使用到的圖形化工具:Heidisql…

云端AI大模型群體智慧后臺架構思考

1 大模型的調研 1.1 主流的大模型 openai-chatgpt 阿里巴巴-通義千問 一個專門響應人類指令的大模型。我是效率助手,也是點子生成機,我服務于人類,致力于讓生活更美好。 百度-文心一言(千帆大模型) 文心一言"…

MySQL基礎篇(三)數據庫的修改 刪除 備份恢復 查看連接情況

對數據庫的修改主要指的是修改數據庫的字符集,校驗規則。 將test1數據庫字符集改為gbk。 數據庫的刪除: 執行完該數據庫就不存在了,對應數據庫文件夾被刪除,級聯刪除,里面的數據表全部被刪除。 注意:不要隨…

淺識Jmeter與淺談互聯網公司高并發業務壓測流程痛點

淺談Jmeter 什么是Jmeter JMeter 是 Apache 軟件基金會開發的一個開源軟件,用于負載測試和性能測試。它被設計用來模擬多種請求到服務器、網絡或對象,以測試其性能。JMeter 可以用于測試靜態和動態資源,并且可以模擬各種協議的請求&#xf…

NDVI數據集提取植被覆蓋度FVC

植被覆蓋度FVC 植被覆蓋度(Foliage Vegetation Cover,FVC)是指植被冠層覆蓋地表的面積比例,通常用來描述一個區域內植被的茂密程度或生長狀況。它是生態學、環境科學以及地理信息系統等領域的重要指標,對于理解地表能…

絕區叁--如何在移動設備上本地運行LLM

隨著大型語言模型 (LLM)(例如Llama 2和Llama 3)不斷突破人工智能的界限,它們正在改變我們與周圍技術的互動方式。這些模型早已集成到我們的手機中,但到目前為止,它們理解和處理請求的能力還非常有限。然而,…

手寫實現一個ORM框架

手寫實現一個ORM框架 什么是ORM框架、ORM框架的作用效果演示框架設計代碼細節SqlBuilderSqlExecutorStatementHandlerParameterHandlerResultSetHandler逆序生成實體類 大家好,本人最近寫了一個ORM框架,想在這里分享給大家,讓大家來學習學習。…

leetcode力扣_排序問題

215.數組中的第K個最大元素 鑒于已經將之前學的排序算法忘得差不多了,只會一個冒泡排序法了,就寫了一個冒牌排序法,將給的數組按照降序排列,然后取nums[k-1]就是題目要求的,但是提交之后對于有的示例顯示”超出時間限制…

JavaWeb開發之環境準備-大合集

本文博客地址 JavaWeb開發 || 環境準備 1. 前言2. JDK8安裝2.1 下載地址2.2 安裝配置圖示2.2.1 JDK安裝2.2.2 配置系統環境變量 3. Maven安裝3.1 Maven下載3.2 Maven解壓及系統變量配置 4. Tomcat安裝4.1 Tomcat下載4.2 Tomcat解壓及系統變量配置 5. Redis安裝5.1 Redis下載5.…

記錄一次麒麟V10 安裝sysbench各種報錯(關于MySQL)處理過程

sysbench手工下載: https://github.com/akopytov/sysbench 下載.zip文件,上傳到服務器上 解壓、安裝: unzip sysbench-master.zipcd sysbench-master/sh autogen.sh./configure 報錯:沒有mysql驅動 configure: error: mysql_c…

Marin說PCB之CAM350的軟件使用知多少?

今天上海的氣溫那叫一個高啊,溫度都達到了39左右了都,我都嚴重懷疑我不是在魔都上班而是在火焰山板磚去了。這么燥熱的天氣真的是嚴重影響了小編我的工作效率,沒有心情工作啊,要去泳池避避暑,沖個涼也行啊。這種天氣只…

WebKit 的結構、工作流程、技術細節和高級特性

WebKit 是一個開源的瀏覽器引擎,主要負責解析和渲染網頁,執行 JavaScript 代碼以及處理用戶交互。它最初由蘋果公司開發,用于 Safari 瀏覽器,但后來 Google 和其他公司也基于 WebKit 開發了自己的瀏覽器,如早期版本的 …

SQL Server時間轉換

第一種:format --轉化成年月日 select format( GETDATE(),yyyy-MM-dd) --轉化年月日,時分秒,這里的HH指24小時的,hh是12小時的 select format( GETDATE(),yyyy-MM-dd HH:mm:ss) --轉化成時分秒的,這里就不一樣的&…

力扣5----最長回文子串

給你一個字符串 s,找到 s 中最長的回文子串 示例 1: 輸入:s "babad" 輸出:"bab" 解釋:"aba" 同樣是符合題意的答案。示例 2: 輸入:s "cbbd" 輸出…

Feign-未完成

Feign Java中如何實現接口調用?即如何發起http請求 前三種方式比較麻煩,在發起請求前,需要將Java對象進行序列化轉為json格式的數據,才能發送,然后進行響應時,還需要把json數據進行反序列化成java對象。 …

G2.【C語言】EasyX繪制顏色窗口

1.窗口 窗口&#xff1a;寬度*高度&#xff08;單位都是像素&#xff09; #include <stdio.h> #include <easyx.h> int main() {initgraph(640, 480);getchar();return 0; } 640是寬&#xff0c;480是高 2.操作窗口的三個按鈕 #include <stdio.h> #incl…