性能測(cè)試的原則和方法

點(diǎn)擊鏈接加入QQ群 522720170(免費(fèi)公開(kāi)課、視頻應(yīng)有盡有):https://jq.qq.com/?_wv=1027&k=5C08ATe

什么是性能問(wèn)題

性能問(wèn)題表現(xiàn)第一種

小規(guī)模使用的時(shí)候性能表現(xiàn)很好,在大規(guī)模使用的時(shí)候,性能變得很差,業(yè)務(wù)響應(yīng)時(shí)間隨業(yè)務(wù)壓力變得越來(lái)越慢

原因:代碼中對(duì)資源使用產(chǎn)生的瓶頸,后續(xù)的請(qǐng)求在資源(cpu、內(nèi)存、鎖、線程池)上排隊(duì)

例子: 沒(méi)有索引的表的查詢 隨著業(yè)務(wù)量增加,表的行數(shù)快速增加,查詢?cè)絹?lái)越慢

性能測(cè)試解決的大部分問(wèn)題是這種類型

性能問(wèn)題表現(xiàn)第二種

在一定壓力情況下,應(yīng)用的性能突然變差或者不可使用

原因:應(yīng)用突然進(jìn)入了一個(gè)異常邏輯,占用了很多資源,并且無(wú)法從異常狀態(tài)下退出

例子:fetion 后臺(tái) 初期版本中使用同步的socket連接,網(wǎng)絡(luò)單點(diǎn)異常的時(shí)候,全網(wǎng)的服務(wù)都不可用。

性能測(cè)試很難解決這種類型的性能問(wèn)題。很難定位異常邏輯是什么。

性能問(wèn)題表現(xiàn)第三種

在壓力大于某個(gè)閥值的情況下,總會(huì)出現(xiàn)少量業(yè)務(wù)錯(cuò)誤

原因:業(yè)務(wù)邏輯考慮不嚴(yán)密,導(dǎo)致少量流程不是按照期望發(fā)生

例子:取一個(gè)值做uniquekey值,鎖保護(hù)不夠?qū)е?,取值不唯一?/p>

性能測(cè)試能夠很好的解決這類問(wèn)題。

一些基本概念詳細(xì)解析

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

Response time是性能測(cè)試中考察被測(cè)試軟件性能的一個(gè)指標(biāo);

Response time包括從客戶端請(qǐng)求發(fā)出開(kāi)始,到reponse 應(yīng)答回來(lái)后的時(shí)間總和,可能包括:

網(wǎng)絡(luò)傳輸

cpu上可執(zhí)行隊(duì)列的等待時(shí)間

cpu計(jì)算

線程執(zhí)行sleep語(yǔ)句的時(shí)間

鎖、閂的等待時(shí)間

磁盤(pán)io等待時(shí)間等。

吞吐量tps

吞吐量 tps是考察性能的另一個(gè)指標(biāo);

單位時(shí)間內(nèi)完成業(yè)務(wù)量的多少,tps 是一個(gè)具體的常用的指標(biāo),每秒鐘完成的業(yè)務(wù)個(gè)數(shù)。

通常的誤會(huì)是認(rèn)為response time一定會(huì)影響tps,這個(gè)不一定成立

并發(fā)

并發(fā)是指同時(shí)被處理的請(qǐng)求個(gè)數(shù),同時(shí)處理可以有2個(gè)含義

同時(shí)都在線程堆棧上的請(qǐng)求

指在正在cpu上處理的請(qǐng)求

這里指得是后者。

那么最大的tps = Concurrency*1000 /請(qǐng)求在cpu上的處理時(shí)間(ms)

思考時(shí)間

Think Time思考時(shí)間 Think time是在測(cè)試代碼中出現(xiàn)的概念,為了在測(cè)試代碼中模擬時(shí)間用戶的思考時(shí)間而加的sleep時(shí)間,2個(gè)作用

第一作用是控制測(cè)試代碼的業(yè)務(wù)執(zhí)行速度,完美地執(zhí)行出預(yù)計(jì)的場(chǎng)景

模擬實(shí)際用戶執(zhí)行的思考時(shí)間

有狀態(tài)的服務(wù) 很重要

無(wú)狀態(tài)的服務(wù) 不重要

測(cè)試壓力 business load

測(cè)試壓力是什么?或者是客戶做了什么導(dǎo)致服務(wù)器產(chǎn)生壓力

對(duì)于無(wú)狀態(tài)服務(wù)器,客戶端的壓力來(lái)源于客戶端的請(qǐng)求數(shù)/秒

對(duì)于有狀態(tài)服務(wù)器,客戶端的壓力是客戶端的在服務(wù)器的留存信息和rps。

數(shù)據(jù)庫(kù)是一個(gè)有狀態(tài)的服務(wù)器

有狀態(tài)的服務(wù)器更容易有性能問(wèn)題

性能測(cè)試過(guò)程

完美的測(cè)試過(guò)程

完美的性能測(cè)試就是軟件在現(xiàn)網(wǎng)上實(shí)際運(yùn)行的過(guò)程

實(shí)驗(yàn)室狀態(tài)下永遠(yuǎn)也無(wú)法完全模擬

性能測(cè)試無(wú)法找到所有的問(wèn)題

性能測(cè)試方案

定義了在影響軟件運(yùn)行性能的各個(gè)方面采用什么樣的方法和策略模擬真實(shí)的情況,達(dá)到盡量真實(shí)模擬的目的。

非常重要, 決定了測(cè)試的成敗

基礎(chǔ)數(shù)據(jù) : 測(cè)試之前,測(cè)試環(huán)境中已有的數(shù)據(jù)總和

關(guān)于基礎(chǔ)數(shù)據(jù)的原則

必須調(diào)查或者預(yù)測(cè)出數(shù)據(jù)庫(kù)表中每個(gè)表應(yīng)該有多少行的數(shù)據(jù)。

而且數(shù)據(jù)取值要實(shí)際情況一樣豐富。

數(shù)據(jù)長(zhǎng)度和實(shí)際情況相同

基礎(chǔ)數(shù)據(jù)決定著數(shù)據(jù)庫(kù)server的cpu、內(nèi)存、io使用或其他多種資源的使用邏輯。

測(cè)試數(shù)據(jù): 從基礎(chǔ)數(shù)據(jù)中選取的,參與到性能測(cè)試中的數(shù)據(jù)

選擇原則

在應(yīng)用合理范圍內(nèi)隨機(jī)挑選數(shù)據(jù)、挑選足夠的量。

挑選數(shù)據(jù)的方式通常影響數(shù)據(jù)庫(kù)的內(nèi)存和io,有狀態(tài)服務(wù)的cpu和內(nèi)存,線程、鎖等。

業(yè)務(wù)模型

測(cè)試完成哪些業(yè)務(wù)?完成速率?

建立業(yè)務(wù)模型的原則

最好是實(shí)際用戶行為的統(tǒng)計(jì),如果沒(méi)有借助同類軟件的用戶行為統(tǒng)計(jì),再?zèng)]有,根據(jù)有經(jīng)驗(yàn)人員的預(yù)估。

把用戶所有可能使用業(yè)務(wù)按使用頻繁程度排序,頻繁程度越高就越應(yīng)該納入測(cè)試場(chǎng)景。

查看業(yè)務(wù)消耗計(jì)算資源的程度,預(yù)計(jì)消耗程度越大的越應(yīng)該納入測(cè)試場(chǎng)景

建立業(yè)務(wù)模型的原則

多個(gè)業(yè)務(wù)在一起的復(fù)雜場(chǎng)景:把所有業(yè)務(wù)的在周期內(nèi)的tps放在一起考察,一般情況下所有業(yè)務(wù)會(huì)有一致性的行為,即tps變化一致,取峰值階段的tps為測(cè)試通過(guò)標(biāo)準(zhǔn)。

如何有明顯不一致,需要取2到多個(gè)典型場(chǎng)景分別測(cè)試

小強(qiáng)性能測(cè)試班預(yù)計(jì)5月份開(kāi)課,招生進(jìn)行中,已經(jīng)有不少小伙伴報(bào)名了哦。

所有學(xué)員享受免費(fèi)、不限次數(shù)、無(wú)限重學(xué)的權(quán)利直到學(xué)會(huì)為止,拒絕限制次數(shù)、繳納重學(xué)費(fèi)的惡心規(guī)矩。

咨詢QQ 2083503238 ,大綱介紹:www.xqtesting.com

測(cè)試場(chǎng)景

多大測(cè)試壓力(多少在線用戶或者rps是多少)

預(yù)估和實(shí)際預(yù)測(cè)的結(jié)果

測(cè)試多長(zhǎng)時(shí)間?

無(wú)狀態(tài)的幾個(gè)小時(shí)

有狀態(tài)的幾天

硬件資源選擇的原則

大型分布式軟件的中每個(gè)角色都需要負(fù)載均衡的設(shè)計(jì)才能夠平滑擴(kuò)展。 那么測(cè)試環(huán)境只需要取得這樣一個(gè)環(huán)境的小的集合就可以了。

單個(gè)硬件設(shè)備最好使用上線后用的機(jī)器,因?yàn)椴煌O(shè)備之間的差異很大,無(wú)法但從cpu、內(nèi)存、tpcc等指標(biāo)來(lái)分析硬件之間的差異。

使用差異很大的設(shè)備測(cè)試只能定性的說(shuō)明問(wèn)題,無(wú)法定量

如何編寫(xiě)測(cè)試代碼

能和實(shí)際的客戶一樣完成業(yè)務(wù)功能。這是最基本的能力,也是性能測(cè)試的基礎(chǔ),必選

對(duì)每次與服務(wù)器的交互做嚴(yán)格的結(jié)果正確性檢查,保證功能執(zhí)行的正確性。性能測(cè)試的目標(biāo)不僅僅是提供測(cè)試的工作壓力,而且要保證測(cè)試功能的正確性,必選。

提供出錯(cuò)日志功能,這對(duì)于初步分析性能問(wèn)題,或者測(cè)試代碼、被測(cè)試軟件的功能問(wèn)題都是非常好的手段,可選

測(cè)試代碼在設(shè)計(jì)時(shí)要意識(shí)地保證數(shù)據(jù)庫(kù)的數(shù)據(jù)量的穩(wěn)定性,可選。

提高測(cè)試代碼可配置性,保證在多種不同的測(cè)試場(chǎng)景下,測(cè)試場(chǎng)景可迅速建立,可選。

測(cè)試執(zhí)行人的能力要求

測(cè)試人需要按照測(cè)試方案的要求,配置測(cè)試代碼和使用測(cè)試工具建立起方案中的測(cè)試場(chǎng)景,必選。

按照方案選擇合理的測(cè)試數(shù)據(jù),必選。

測(cè)試人必須完全了解測(cè)試代碼的每個(gè)細(xì)節(jié),如果在測(cè)試中發(fā)現(xiàn)測(cè)試任何錯(cuò)誤,如果這個(gè)錯(cuò)誤是測(cè)試代碼或者場(chǎng)景設(shè)置的問(wèn)題,測(cè)試人有能力解決,必選。

判斷測(cè)試的結(jié)果分析是否有性能問(wèn)題,必選。

對(duì)于服務(wù)方的問(wèn)題,提供當(dāng)時(shí)的上下文環(huán)境供開(kāi)發(fā)和優(yōu)化人員分析,可選。

能夠解決被測(cè)試軟件方由于配置錯(cuò)誤等引起的簡(jiǎn)單問(wèn)題,可選。

軟件優(yōu)化的基本步驟

性能問(wèn)題有哪些? cpu的瓶頸、內(nèi)存的瓶頸、磁盤(pán)io的瓶頸、網(wǎng)絡(luò)io的瓶頸、線程之間同步的瓶頸等等

軟件優(yōu)化好以后應(yīng)該是什么樣?特征

Tps 基本上和cpu使用率正相關(guān)

響應(yīng)時(shí)間1-50 ms, tps 幾百幾千幾萬(wàn)

參考測(cè)試設(shè)備 cpu等資源的情況

業(yè)務(wù)完成過(guò)程的復(fù)雜度

如果有性能瓶頸

首先排查其它瓶頸,保證tps和cpu正相關(guān)。

察看是否有cpu濫用的現(xiàn)象

“所有高cpu的問(wèn)題都是不必要的循環(huán)引起的”---個(gè)人體會(huì)

沒(méi)有索引的表的查詢

應(yīng)用本地沒(méi)有緩存,反復(fù)從數(shù)據(jù)庫(kù)或者其它應(yīng)用獲取。

線程數(shù)太多,導(dǎo)致過(guò)多的上下文切換。

性能測(cè)試的限制

性能測(cè)試何時(shí)測(cè)不準(zhǔn)?

性能測(cè)試有限性導(dǎo)致測(cè)不準(zhǔn)

沒(méi)有測(cè)試到的場(chǎng)景和業(yè)務(wù)

軟件異常流程

硬件、網(wǎng)絡(luò)環(huán)境不一樣

比如客戶端特別移動(dòng)客戶端網(wǎng)速慢

用戶行為變化導(dǎo)致的測(cè)不準(zhǔn)

用戶數(shù)據(jù)增長(zhǎng)導(dǎo)致的測(cè)不準(zhǔn)

一個(gè)性能優(yōu)化的例子

被測(cè)試系統(tǒng)問(wèn)題介紹:一個(gè) 使用 dot net remoting的系統(tǒng),在線上使用 1年多,突然出現(xiàn) 嚴(yán)重的outofmemory的問(wèn)題

負(fù)載非常:忙時(shí)remoting的調(diào)用大約0.35個(gè)/秒

Cpu使用率低: 平均只有 1%

內(nèi)存只升不降,在幾天內(nèi)達(dá)到最大值,導(dǎo)致 outofmemory。如下圖:

從應(yīng)用來(lái)看,每天只有20個(gè)客戶端在線使用,幾百個(gè)tcp連接怎么來(lái)的?

原因:網(wǎng)絡(luò)異常,連接已經(jīng)中斷,但server沒(méi)有感知。

應(yīng)用部署在win2000上, win2000 無(wú)法感知連接異常

解決辦法:升級(jí)到win2003, 在注冊(cè)表增加tcp連接的檢測(cè),每90秒檢查一次

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容