日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

性能專(zhuān)題:一文搞懂,性能測(cè)試指標(biāo)評(píng)估方法

 測(cè)試開(kāi)發(fā)技術(shù) 2022-06-18 發(fā)布于廣東

往期性能專(zhuān)題:

【性能系列連載一】開(kāi)篇:性能測(cè)試不可不知的“干貨”

性能專(zhuān)題:一文搞懂性能測(cè)試常見(jiàn)指標(biāo)

1. 前言

在上一篇文章性能專(zhuān)題:一文搞懂性能測(cè)試常見(jiàn)指標(biāo)中,已經(jīng)介紹了,在開(kāi)展性能測(cè)試時(shí),各個(gè)維度的常見(jiàn)性能指標(biāo)項(xiàng)有哪些。

而本文將繼續(xù)介紹,對(duì)于軟件性能而言,有哪些指標(biāo)是需要重點(diǎn)關(guān)注的,并且這些重點(diǎn)關(guān)注的指標(biāo)又是如何來(lái)評(píng)估和計(jì)算的。

2. 軟件性能的關(guān)注點(diǎn)

對(duì)一個(gè)軟件做性能測(cè)試時(shí),一般需要關(guān)注哪些性能項(xiàng)呢?

換個(gè)角度來(lái)思考,我們?cè)谲浖O(shè)計(jì)、部署、使用、維護(hù)中一共有哪些角色的參與,然后再考慮這些角色各自關(guān)注的性能點(diǎn)是什么?

首先,開(kāi)發(fā)軟件的目的是為了讓用戶(hù)使用,我們先站在用戶(hù)的角度分析一下,用戶(hù)會(huì)關(guān)注哪些性能呢。

對(duì)于用戶(hù)來(lái)說(shuō),當(dāng)點(diǎn)擊一個(gè)按鈕、鏈接或發(fā)出一條指令開(kāi)始,到系統(tǒng)把結(jié)果以用戶(hù)感知的形式展現(xiàn)出來(lái)為止,這個(gè)過(guò)程所消耗的時(shí)間是用戶(hù)對(duì)這個(gè)軟件性能的直觀印象。也就是我們所說(shuō)的響應(yīng)時(shí)間,當(dāng)響應(yīng)時(shí)間較小時(shí),用戶(hù)體驗(yàn)是很好的。當(dāng)然用戶(hù)體驗(yàn)的響應(yīng)時(shí)間包括個(gè)人主觀因素和客觀響應(yīng)時(shí)間,在設(shè)計(jì)軟件時(shí),我們就需要考慮到如何更好地結(jié)合這兩部分達(dá)到用戶(hù)最佳的體驗(yàn)。如:用戶(hù)在大數(shù)據(jù)量查詢(xún)時(shí),我們可以將先提取出來(lái)的數(shù)據(jù)展示給用戶(hù),在用戶(hù)看的過(guò)程中繼續(xù)進(jìn)行數(shù)據(jù)檢 索,這時(shí)用戶(hù)并不知道我們后臺(tái)在做什么。

因此,用戶(hù)關(guān)注的是用戶(hù)操作后軟件的響應(yīng)時(shí)間。

其次,站在管理員或運(yùn)維的角度考慮,他們一般關(guān)注的性能項(xiàng)有什么,通常來(lái)說(shuō),包括但不限如下一些指標(biāo)項(xiàng):

  • 響應(yīng)時(shí)間

  • 服務(wù)器資源使用情況是否合理

  • 應(yīng)用服務(wù)器和數(shù)據(jù)庫(kù)資源使用是否合理

  • 系統(tǒng)最多支持多少用戶(hù)訪(fǎng)問(wèn)、系統(tǒng)最大業(yè)務(wù)處理量是多少

  • 系統(tǒng)性能可能存在的瓶頸在哪里

  • 更換哪些設(shè)備可以提高性能

  • 系統(tǒng)能否支持7×24小時(shí)的業(yè)務(wù)訪(fǎng)問(wèn)

再者,站在開(kāi)發(fā)(設(shè)計(jì))人員角度去考慮,影響性能的因素,常見(jiàn)有如下一些。

  • 架構(gòu)設(shè)計(jì)是否合理

  • 數(shù)據(jù)庫(kù)設(shè)計(jì)是否合理

  • 代碼是否存在性能方面的問(wèn)題

  • 系統(tǒng)中是否有不合理的內(nèi)存使用方式

  • 系統(tǒng)中是否存在不合理的線(xiàn)程同步方式

  • 系統(tǒng)中是否存在不合理的資源競(jìng)爭(zhēng)

3. 衡量服務(wù)性能的關(guān)鍵指標(biāo)及評(píng)估方法

在如此多的性能指標(biāo)項(xiàng)中,最為重要的又有哪些?或者是說(shuō)在衡量服務(wù)性能指標(biāo)時(shí),最常關(guān)注的幾項(xiàng)性能指標(biāo)有哪幾個(gè):QPS(TPS)、并發(fā)數(shù)、響應(yīng)時(shí)間。

  •  QPS(TPS):每秒鐘處理request/事務(wù)的數(shù)量。

  • 并發(fā)用戶(hù)數(shù): 系統(tǒng)同時(shí)處理的request/事務(wù)的用戶(hù)數(shù)量。

  • 響應(yīng)時(shí)間(Response Time,RT): 可以理解為服務(wù)器處理響應(yīng)的耗時(shí),一般取平均響應(yīng)時(shí)間。

下面將對(duì)QPS(TPS)、并發(fā)數(shù)、響應(yīng)時(shí)間幾項(xiàng)最主要的指標(biāo)評(píng)估方法進(jìn)行介紹,別急,且往下看。

3.1 并發(fā)用戶(hù)數(shù)

1. 提及并發(fā)用戶(hù)數(shù),如何理解什么才算是有效的并發(fā)用戶(hù)?

并發(fā)用戶(hù):指的是現(xiàn)實(shí)系統(tǒng)中操作業(yè)務(wù)的用戶(hù),在性能測(cè)試工具中,一般稱(chēng)為虛擬用戶(hù)數(shù)(Virutal User)。

需要注意的是,并發(fā)用戶(hù)跟注冊(cè)用戶(hù)、在線(xiàn)用戶(hù)有很大差別的,并發(fā)用戶(hù)一定會(huì)對(duì)服務(wù)器產(chǎn)生壓力的,而在線(xiàn)用戶(hù)只是 ”掛” 在系統(tǒng)上,對(duì)服務(wù)器不產(chǎn)生壓力,注冊(cè)用戶(hù)一般指的是數(shù)據(jù)庫(kù)中存在的用戶(hù)。

并發(fā)用戶(hù)這些用戶(hù)的最大特征是和服務(wù)器會(huì)產(chǎn)生交互,這種交互既可以是單向的傳輸數(shù)據(jù),也可以是雙向的傳送數(shù)據(jù)。

2.并發(fā)用戶(hù)數(shù)常見(jiàn)的評(píng)估方法

對(duì)于已有系統(tǒng)來(lái)說(shuō),評(píng)估并發(fā)用戶(hù)數(shù),可以從如下幾個(gè)方面去做數(shù)據(jù)參考。

  • 1. 系統(tǒng)用戶(hù)數(shù)

  • 2. 在線(xiàn)用戶(hù)數(shù)

  • 3. 并發(fā)用戶(hù)數(shù)

一般來(lái)說(shuō),可選取高峰時(shí)刻,在一定時(shí)間內(nèi)使用系統(tǒng)的人數(shù),這些人數(shù)可認(rèn)為是在線(xiàn)用戶(hù)數(shù),而并發(fā)用戶(hù)數(shù)可以取其中8%~15%的比例基數(shù),例如在1個(gè)小時(shí)內(nèi),使用系統(tǒng)的在線(xiàn)用戶(hù)數(shù)為10萬(wàn),那么取8%~15%(即8000~1.5萬(wàn))作為并發(fā)用戶(hù)數(shù)就基本足夠了。

當(dāng)然,網(wǎng)上也流行另一種并發(fā)用戶(hù)數(shù)評(píng)估計(jì)算方式(可供參考)

它是由幾項(xiàng)因素來(lái)決定的:

  • 登錄系統(tǒng)的用戶(hù)數(shù)量(n),可以理解為平均每天訪(fǎng)問(wèn)用戶(hù)數(shù)。

  • 用戶(hù)從登錄系統(tǒng)到退出系統(tǒng)的時(shí)間間隔(L),可以理解為一天內(nèi)用戶(hù)從登錄到退出系統(tǒng)的時(shí)間間隔。

  • 被考察的時(shí)間長(zhǎng)度(T),可以理解為一天內(nèi)有多長(zhǎng)時(shí)間有用戶(hù)訪(fǎng)問(wèn)系統(tǒng)

利用經(jīng)驗(yàn)公式估算系統(tǒng)的平均并發(fā)用戶(hù)數(shù)和峰值數(shù)據(jù),方法可供參考(并不一定準(zhǔn)確):

  1. 平均并發(fā)用戶(hù)數(shù)為: C = n*L/T

  2. 并發(fā)用戶(hù)數(shù)峰值:  C' = C + 3*√C

> 其中√為根號(hào)

例如:某系統(tǒng)A,有3000個(gè)用戶(hù),平均每天大概有400個(gè)用戶(hù)要訪(fǎng)問(wèn)該系統(tǒng),對(duì)于一個(gè)典型用戶(hù)來(lái)說(shuō),一天之內(nèi)用戶(hù)從登陸到退出的平均時(shí)間為4小時(shí),而在一天之內(nèi),用戶(hù)只有在8小時(shí)之內(nèi)會(huì)使用該系統(tǒng)。那么,

  • 平均并發(fā)用戶(hù)數(shù)為:C = 400*4/8 = 200

  • 并發(fā)用戶(hù)數(shù)峰值為:C1 = 200 + 3*√200 = 243

對(duì)于新系統(tǒng)來(lái)說(shuō),如果沒(méi)有歷史數(shù)據(jù)作參考,建議通過(guò)業(yè)務(wù)部門(mén)進(jìn)行評(píng)估。

3.2 響應(yīng)時(shí)間

作為一個(gè)用戶(hù)你可以對(duì)吞吐量(QPS、TPS)、并發(fā)用戶(hù)數(shù)這些毫不關(guān)心,但響應(yīng)時(shí)間卻是用戶(hù)感受系統(tǒng)性能的主要體現(xiàn)。從用戶(hù)角度來(lái)說(shuō),軟件性能就是軟件對(duì)用戶(hù)操作的響應(yīng)時(shí)間。說(shuō)得更明確一點(diǎn),對(duì)用戶(hù)來(lái)說(shuō),當(dāng)用戶(hù)單擊一個(gè)按鈕,發(fā)出一條指令或在web頁(yè)面上單擊一個(gè)鏈接,從用戶(hù)單擊開(kāi)始到應(yīng)用系統(tǒng)把本次操作的結(jié)果以用戶(hù)能察覺(jué)的方式展示出來(lái),這個(gè)過(guò)程所消耗的時(shí)間就是用戶(hù)對(duì)軟件性能的直觀印象。

響應(yīng)時(shí)間既然對(duì)用戶(hù)體驗(yàn)如此重要,那這個(gè)時(shí)間又是如何評(píng)估計(jì)算出來(lái)的呢?

用一個(gè)公式來(lái)表示:

響應(yīng)時(shí)間=網(wǎng)絡(luò)傳輸時(shí)間(請(qǐng)求)+服務(wù)器處理時(shí)間(一層或是多層)+網(wǎng)絡(luò)傳輸時(shí)間(響應(yīng))+頁(yè)面前段解析時(shí)間

更具體來(lái)講:

`響應(yīng)時(shí)間=呈現(xiàn)時(shí)間+網(wǎng)絡(luò)傳輸時(shí)間+系統(tǒng)處理時(shí)間

1. 呈現(xiàn)時(shí)間

呈現(xiàn)時(shí)間主要是指前端的響應(yīng)時(shí)間,這部分時(shí)間主要取決于客戶(hù)端而非服務(wù)端。當(dāng)然,這個(gè)呈現(xiàn)時(shí)間也不能全怪罪客戶(hù)端身上!它還和承載它的操作系統(tǒng)有關(guān),以及電腦硬件比如cpu 、內(nèi)存有關(guān)。

2. 網(wǎng)絡(luò)傳輸時(shí)間

千萬(wàn)不要忽視數(shù)據(jù)傳輸時(shí)間。試想一下,如果你要寄信給你一個(gè)遠(yuǎn)方的朋友,你想是什么影響你將信息傳遞給遠(yuǎn)方的朋友?不是你寫(xiě)信的過(guò)程(如果你寫(xiě)的信不像書(shū)一樣厚的話(huà)),也不是你朋友讀信的過(guò)程,而是送信的過(guò)程。

你的帶寬是多少?有沒(méi)有考慮網(wǎng)絡(luò)延遲? 互聯(lián)網(wǎng)是個(gè)網(wǎng),就是算是相同的起點(diǎn)與終點(diǎn),它有可能走的不同的路線(xiàn)。

這也是為什么我們?cè)?/span>一般做性能測(cè)試時(shí),一般要強(qiáng)調(diào)要在局域網(wǎng)中進(jìn)行

3. 系統(tǒng)處理時(shí)間

在進(jìn)行性能測(cè)試時(shí),呈現(xiàn)時(shí)間和數(shù)據(jù)傳輸時(shí)間通常都是我們很難控制的,用戶(hù)使用的電腦千差萬(wàn)別,用戶(hù)的網(wǎng)絡(luò)狀況也是千差萬(wàn)別。我們唯一能控制的就是將系統(tǒng)的處理請(qǐng)求的時(shí)間縮到最短。

如果我們對(duì)系統(tǒng)處理進(jìn)行分解的話(huà),它又是一個(gè)非常龐大與復(fù)雜的過(guò)程。包括了語(yǔ)言、語(yǔ)言框架、中間件,數(shù)據(jù)庫(kù)、系統(tǒng)架構(gòu)以及服務(wù)器系統(tǒng)等。

現(xiàn)在的測(cè)試工具一般都屏蔽呈現(xiàn)過(guò)程,只是模擬多用戶(hù)并發(fā)請(qǐng)求,計(jì)算用戶(hù)得到響應(yīng)的時(shí)間,也不會(huì)將服務(wù)器的每個(gè)響應(yīng)都向客戶(hù)端呈現(xiàn)。

對(duì)于數(shù)據(jù)傳輸?shù)膯?wèn)題,這也是我要強(qiáng)調(diào)的性能測(cè)試要在局域網(wǎng)中進(jìn)行,在局域網(wǎng)中一般不會(huì)受到數(shù)據(jù)帶寬的限制。所以,可以對(duì)數(shù)據(jù)的傳輸時(shí)間忽略不計(jì)。

關(guān)于響應(yīng)時(shí)間,要特別說(shuō)明的一點(diǎn)是,對(duì)客戶(hù)來(lái)說(shuō),該值是否能夠被接受是帶有一定的用戶(hù)主觀色彩,也就是說(shuō),響應(yīng)時(shí)間的“長(zhǎng)”和“短”沒(méi)有絕對(duì)的區(qū)別。

在互聯(lián)網(wǎng)行業(yè)對(duì)于用戶(hù)響應(yīng)時(shí)間,有一個(gè)普遍的標(biāo)準(zhǔn):2/5/10秒原則。也就是說(shuō),在2秒之內(nèi)給客戶(hù)響應(yīng)被用戶(hù)認(rèn)為是“非常有吸引力”的用戶(hù)體驗(yàn)。在5秒之內(nèi)響應(yīng)客戶(hù)被認(rèn)為“比較不錯(cuò)”的用戶(hù)體驗(yàn),在10秒內(nèi)給用戶(hù)響應(yīng)被認(rèn)為“糟糕”的用戶(hù)體驗(yàn)。如果超過(guò)10秒還沒(méi)有得到響應(yīng),那么大多用戶(hù)會(huì)認(rèn)為這次請(qǐng)求是失敗的。這里我們還要考慮一個(gè)使用頻率的因素。如果一個(gè)功能,一個(gè)月才用上一次,并且要求返回的結(jié)果也并非實(shí)時(shí)的,那么即便慢一些,對(duì)于用戶(hù)來(lái)講,也是可接受的。

3.3 系統(tǒng)吐吞量(QPS\TPS)

系統(tǒng)吞吐量指單位時(shí)間內(nèi)系統(tǒng)處理用戶(hù)的請(qǐng)求數(shù)。從業(yè)務(wù)角度看,吞吐量可以用:請(qǐng)求數(shù)/秒、頁(yè)面數(shù)/秒、人數(shù)/天或處理業(yè)務(wù)數(shù)/小時(shí)等單位來(lái)衡量,從網(wǎng)絡(luò)角度看,吞吐量可以用:字節(jié)/秒來(lái)衡量

對(duì)于交互式應(yīng)用來(lái)說(shuō),吞吐量指標(biāo)反映的是服務(wù)器承受的壓力,他能夠說(shuō)明系統(tǒng)的負(fù)載能力。以不同方式表達(dá)的吞吐量可以說(shuō)明不同層次的問(wèn)題,例如,以字節(jié)數(shù)/秒方式可以表示主要受網(wǎng)絡(luò)基礎(chǔ)設(shè)施、服務(wù)器架構(gòu)、應(yīng)用服務(wù)器制約等方面的瓶頸;已請(qǐng)求數(shù)/秒的方式表示主要是受應(yīng)用服務(wù)器和應(yīng)用代碼的制約體現(xiàn)出的瓶頸。

QPS:全名 Queries Per Second,意思是“每秒查詢(xún)率”,是一臺(tái)服務(wù)器每秒能夠響應(yīng)的查詢(xún)次數(shù),簡(jiǎn)單的說(shuō),QPS = req/sec = 請(qǐng)求數(shù)/秒。比如執(zhí)行了select操作,相應(yīng)的QPS就會(huì)增加,它代表的是服務(wù)器的機(jī)器的性能最大吞吐能力。

計(jì)算QPS的常用公式:

QPS(TPS)= 并發(fā)數(shù)/平均響應(yīng)時(shí)間

另外,關(guān)于峰值QPS計(jì)算方式,一般也可參照2/8原則(供參考,并非一定):

  • 原理:每天80%的訪(fǎng)問(wèn)集中在20%的時(shí)間里,這20%時(shí)間叫做峰值時(shí)間

  • 公式:( 總PV數(shù) * 80% ) / ( 每天秒數(shù) * 20% ) = 峰值時(shí)間每秒請(qǐng)求數(shù)(QPS)

  • 問(wèn):每天300w PV 的在單臺(tái)機(jī)器上,這臺(tái)機(jī)器需要多少Q(mào)PS?

  • 答:( 3000000 * 0.8 ) / (86400 * 0.2 ) = 139 (QPS)

TPS即 Transactions Per Second 的縮寫(xiě),指每秒處理的事務(wù)數(shù)量。一個(gè)事務(wù)是指一個(gè)客戶(hù)機(jī)向服務(wù)器發(fā)送請(qǐng)求然后服務(wù)器做出回應(yīng)的過(guò)程。

TPS 的過(guò)程包括:客戶(hù)端請(qǐng)求服務(wù)端、服務(wù)端內(nèi)部處理、服務(wù)端返回客戶(hù)端。

關(guān)于TPS的獲取評(píng)估方式,對(duì)于已有系統(tǒng)來(lái)說(shuō):可選取高峰時(shí)刻,在一定時(shí)間內(nèi)(如3-10分鐘),獲取系統(tǒng)總業(yè)務(wù)量,計(jì)算單位時(shí)間(秒)內(nèi)完成的筆數(shù),乘以2-5倍作為峰值的TPS,例如峰值3分鐘內(nèi)處理訂單18萬(wàn)筆,平均TPS是1000,峰值TPS可以是2000-5000。

對(duì)于新系統(tǒng)來(lái)說(shuō),因?yàn)?/span>沒(méi)有歷史數(shù)據(jù)作參考,一般建議通過(guò)業(yè)務(wù)部門(mén)進(jìn)行評(píng)估。

QPS和TPS之間的區(qū)別,也是很多新手剛接觸時(shí)容易搞混的,那他們之間到底有什么區(qū)別和聯(lián)系。

一般來(lái)說(shuō),QPS基本類(lèi)似于TPS,但不同的是,對(duì)于一個(gè)頁(yè)面的一次訪(fǎng)問(wèn),會(huì)形成一個(gè)TPS;但一次頁(yè)面請(qǐng)求,可能產(chǎn)生多次對(duì)服務(wù)器的請(qǐng)求,服務(wù)器對(duì)這些請(qǐng)求,就會(huì)計(jì)入“QPS”之中。

如果是對(duì)一個(gè)接口(單場(chǎng)景)壓測(cè),且這個(gè)接口內(nèi)部不會(huì)再去請(qǐng)求其它接口,那么TPS=QPS。

例如:訪(fǎng)問(wèn)一個(gè) Index 頁(yè)面會(huì)請(qǐng)求服務(wù)器 3 次,包括一次 html,一次 css,一次 js,那么訪(fǎng)問(wèn)這一個(gè)頁(yè)面就會(huì)產(chǎn)生一個(gè)“TPS”,產(chǎn)生三個(gè)“QPS”。

對(duì)于衡量單個(gè)接口服務(wù)的處理能力,一般采用QPS比較多,一般如果衡量事務(wù)業(yè)務(wù)場(chǎng)景的處理能力一般則采用TPS。

注:Jmeter聚合報(bào)告中,Throughput是用來(lái)衡量吞吐量,通常是由TPS來(lái)表示。

4. 小結(jié)

一個(gè)系統(tǒng)處理性能能力通常由QPS(TPS)、并發(fā)數(shù)兩個(gè)因素決定,每套系統(tǒng)這兩個(gè)值都有一個(gè)相對(duì)極限值,在應(yīng)用場(chǎng)景訪(fǎng)問(wèn)壓力下,只要某一項(xiàng)達(dá)到系統(tǒng)最高值,系統(tǒng)的吞吐量就上不去了,如果壓力繼續(xù)增大,系統(tǒng)的吞吐量反而會(huì)下降,原因是系統(tǒng)超負(fù)荷工作,上下文切換、內(nèi)存等其它消耗導(dǎo)致系統(tǒng)性能下降。

影響系統(tǒng)響應(yīng)時(shí)間由CPU運(yùn)算、IO、外部系統(tǒng)響應(yīng)等因素組成。一個(gè)系統(tǒng)的吞度量(承壓能力)與request對(duì)CPU的消耗、外部接口、IO等緊密關(guān)聯(lián),單個(gè)reqeust 對(duì)CPU消耗越高,外部系統(tǒng)接口、IO影響速度越慢,系統(tǒng)吞吐能力越低,反之越高。

最后,幾點(diǎn)小結(jié)和建議:

  • 系統(tǒng)的性能一般由TPS決定,跟并發(fā)用戶(hù)數(shù)沒(méi)有太大直接關(guān)系。

  • 系統(tǒng)的最大TPS是一定的(在一個(gè)范圍內(nèi)),但并發(fā)用戶(hù)數(shù)不一定,可以調(diào)整。

  • 建議性能測(cè)試的時(shí)候,不要設(shè)置過(guò)長(zhǎng)的思考時(shí)間,以最壞的情況下對(duì)服務(wù)器施壓。

  • 一般情況下,大型系統(tǒng)(業(yè)務(wù)量大、機(jī)器多)做壓力測(cè)試,10000~50000個(gè)用戶(hù)并發(fā),中小型系統(tǒng)做壓力測(cè)試,5000個(gè)用戶(hù)并發(fā)比較常見(jiàn)。

  • 通過(guò)系統(tǒng)的監(jiān)控工具,發(fā)現(xiàn)系統(tǒng)的性能瓶頸,通常會(huì)發(fā)生性能瓶頸的地方有CPU、內(nèi)存、磁盤(pán)、網(wǎng)絡(luò)、數(shù)據(jù)庫(kù)等,而緩存系統(tǒng)容易發(fā)生瓶頸的地方是內(nèi)存,儲(chǔ)存型系統(tǒng)則是I/O。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多