產(chǎn)品經(jīng)理:性能測(cè)試了解下?

0 評(píng)論 1044 瀏覽 6 收藏 14 分鐘

本文將深入探討性能測(cè)試的重要性,介紹不同類型的性能測(cè)試,并解釋如何通過性能測(cè)試來優(yōu)化系統(tǒng)性能。從產(chǎn)品經(jīng)理的視角出發(fā),我們將學(xué)習(xí)如何關(guān)注關(guān)鍵性能指標(biāo),以及如何閱讀和理解性能測(cè)試報(bào)告。

小A接到個(gè)網(wǎng)站設(shè)計(jì)需求,由于是感興趣的領(lǐng)域,拿到手可開心了。哼哧哼哧畫了好幾天原型,又拿著菜刀架在開發(fā)脖子上猛干了幾天,終于在一個(gè)月黑風(fēng)高的晚上上線了這個(gè)網(wǎng)站。

然而過了不久,客服電話被打爆,所有投訴都是一句話“你xxx還讓不讓人用了!一直在加載是什么鬼?”于是,在第一百個(gè)投訴打來的時(shí)候,小A已經(jīng)騎著電驢去送外賣了。而導(dǎo)致小A撿瓶蓋的罪魁禍?zhǔn)诪g覽人數(shù)過多,系統(tǒng)直接崩了。

至今,被采訪的小A都表示“現(xiàn)在就是后悔,非常后悔,怎么就沒盯下性能測(cè)試呢?”為了避免過早和小A合伙送外賣,我們一起來學(xué)習(xí)下性能測(cè)試吧。

01 什么是性能測(cè)試?

性能測(cè)試是驗(yàn)證軟件系統(tǒng)是否能夠達(dá)到用戶提出的性能指標(biāo),同時(shí)發(fā)現(xiàn)軟件系統(tǒng)中存在的性能瓶頸,優(yōu)化軟件,最后起到優(yōu)化系統(tǒng)的目的。

在產(chǎn)品上線前,我們無法知道用戶數(shù)量,而且用戶場(chǎng)景也存在不確定性,一旦用戶多了就可能整出各種幺蛾子,所以需要進(jìn)行系統(tǒng)性能測(cè)試。

性能測(cè)試可以告訴我們用戶數(shù)量增加、系統(tǒng)負(fù)載增加時(shí),系統(tǒng)能承受的并發(fā)用戶數(shù)量,以及帶寬是否夠用、cpu是否夠用、內(nèi)存是否夠用、硬盤速度是否跟得上等問題。

02 性能測(cè)試測(cè)什么?

性能測(cè)試的類型和劃分網(wǎng)上有很多定義,我這取比較常見的幾個(gè)

  • 負(fù)載測(cè)試(Load Testing):負(fù)載測(cè)試主要測(cè)試軟件系統(tǒng)在不同負(fù)載下,性能指標(biāo)是否符合預(yù)定指標(biāo),譬如在一定負(fù)載時(shí),系統(tǒng)最大支持多少并發(fā)用戶數(shù),軟件請(qǐng)求出錯(cuò)率等。
  • 壓力測(cè)試(Stress Testing):壓力測(cè)試是指在被測(cè)系統(tǒng)在一定飽和狀態(tài)下,例如CPU、內(nèi)存等在飽和使用情況下,系統(tǒng)能夠處理的會(huì)話能力。說人話就是看看在極端情況下系統(tǒng)還能不能轉(zhuǎn)得起來。
  • 容量測(cè)試(Volume Testing):確定系統(tǒng)最大承受量,譬如系統(tǒng)最大用戶數(shù),最大存儲(chǔ)量,最多處理的數(shù)據(jù)流量等。

03 作為產(chǎn)品需要關(guān)注的性能點(diǎn)有哪些?

為了安穩(wěn)端好產(chǎn)品經(jīng)理的飯碗,我們需要關(guān)注這些性能點(diǎn):

  1. 系統(tǒng)處理一個(gè)請(qǐng)求或一個(gè)任務(wù)耗時(shí)多少?
  2. 系統(tǒng)最多支持多少用戶訪問、系統(tǒng)最大業(yè)務(wù)處理量是多少?
  3. 系統(tǒng)性能可能存在的瓶頸在哪里?
  4. 系統(tǒng)能否支持7×24小時(shí)的業(yè)務(wù)訪問?

04 性能測(cè)試的常見指標(biāo)有哪些?

上面叨叨了這么多,大家對(duì)性能測(cè)試和需要關(guān)注的內(nèi)容應(yīng)該有所了解了,那么作為產(chǎn)品,我們?cè)趺磳?duì)性能測(cè)試進(jìn)行驗(yàn)收呢?為了防止被忽悠,這里我們需要了解一些性能的關(guān)鍵指標(biāo):

1. 外部指標(biāo)

  • 吞吐量:每秒鐘系統(tǒng)能夠處理的請(qǐng)求數(shù)、任務(wù)數(shù)。
  • 響應(yīng)時(shí)間:服務(wù)處理一個(gè)請(qǐng)求或一個(gè)任務(wù)的耗時(shí)。
  • 錯(cuò)誤率:一批請(qǐng)求中結(jié)果出錯(cuò)的請(qǐng)求所占比例。

2. 內(nèi)部指標(biāo)

  • 從服務(wù)器的角度看,性能測(cè)試主要關(guān)注CPU、內(nèi)存、服務(wù)器負(fù)載、網(wǎng)絡(luò)、磁盤IO等。

由于我們是只用指手畫腳,不用自己操刀的產(chǎn)品經(jīng)理,我們只需要重點(diǎn)關(guān)注外部指標(biāo)就可以了。接下來我們學(xué)習(xí)這些外部指標(biāo)。

對(duì)于響應(yīng)時(shí)間,我們比較關(guān)注的是它的均值、中位值、P95值、P99值等。平均值和中位值比較好理解,P分位值是什么意思呢?以P95為例,將響應(yīng)時(shí)間從小到大排列,順序處于95%位置的值就是P95值。

產(chǎn)品經(jīng)理:性能測(cè)試了解下?

系統(tǒng)吞吐量則有幾個(gè)重要參數(shù):QPS(TPS)、并發(fā)數(shù)、響應(yīng)時(shí)間:

  • QPS(TPS):每秒鐘request/事務(wù)數(shù)
  • 并發(fā)數(shù):系統(tǒng)同時(shí)處理的request/事務(wù)數(shù)
  • 響應(yīng)時(shí)間:一般取平均響應(yīng)時(shí)間

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

可以看出一個(gè)系統(tǒng)吞吐量通常由QPS(TPS)、并發(fā)數(shù)兩個(gè)因素決定,每套系統(tǒng)這兩個(gè)值都有一個(gè)相對(duì)極限值,在應(yīng)用場(chǎng)景訪問壓力下,只要某一項(xiàng)達(dá)到系統(tǒng)最高值,系統(tǒng)的吞吐量就上不去了,如果壓力繼續(xù)增大,系統(tǒng)的吞吐量反而會(huì)下降。

在低吞吐量下的響應(yīng)時(shí)間的均值、分布比較穩(wěn)定,不會(huì)產(chǎn)生太大的波動(dòng)。而在高吞吐量下,響應(yīng)時(shí)間會(huì)隨著吞吐量的增長(zhǎng)而增長(zhǎng),增長(zhǎng)的趨勢(shì)可能是線性的,也可能接近指數(shù)的。當(dāng)吞吐量接近系統(tǒng)的峰值時(shí),響應(yīng)時(shí)間會(huì)出現(xiàn)激增。

產(chǎn)品經(jīng)理:性能測(cè)試了解下?

上圖便是吞吐量、響應(yīng)時(shí)長(zhǎng)、并發(fā)數(shù)幾者的關(guān)系圖。橫坐標(biāo)是并發(fā)數(shù),綠線是CPU使用率,紫線是吞吐量,即QPS,藍(lán)線是響應(yīng)時(shí)間。

05 測(cè)試報(bào)告長(zhǎng)啥樣?

理論終歸于實(shí)踐,能看懂測(cè)試報(bào)告,那讀這篇文章的目的才算達(dá)到了。

1. 測(cè)試概述

1.1 測(cè)試目標(biāo)

本次測(cè)試的目的在于探查XXX項(xiàng)目二期重構(gòu)環(huán)境的系統(tǒng)業(yè)務(wù)處理性能,以及在高負(fù)載情況下的系統(tǒng)表現(xiàn)。

1.2 指標(biāo)和術(shù)語
描述本次測(cè)試中涉及到的性能指標(biāo)術(shù)語

產(chǎn)品經(jīng)理:性能測(cè)試了解下?

2. 環(huán)境、工具

2.1 測(cè)試環(huán)境

服務(wù)器:

產(chǎn)品經(jīng)理:性能測(cè)試了解下?

客戶機(jī):

產(chǎn)品經(jīng)理:性能測(cè)試了解下?

2.2 測(cè)試工具

產(chǎn)品經(jīng)理:性能測(cè)試了解下?

3. 測(cè)試方案

3.1 測(cè)試類型

本次性能測(cè)試將主要采用以下幾種測(cè)試類型:

  • 基準(zhǔn)測(cè)試:在小并發(fā)條件下,探測(cè)系統(tǒng)各性能指標(biāo)表現(xiàn),作為后續(xù)比對(duì)基礎(chǔ)。
  • 壓力測(cè)試:由于無法準(zhǔn)確預(yù)估用戶訪問量,因此考慮使用壓力測(cè)試方法。壓力測(cè)試旨在通過不斷 增加系統(tǒng)并發(fā)處理事務(wù)數(shù),增加系統(tǒng)負(fù)載,直到系統(tǒng)到達(dá)性能瓶頸。以此推算出系統(tǒng)可承載用戶和事務(wù)請(qǐng)求數(shù)。穩(wěn)定性測(cè)試:
  • 將系統(tǒng)置于較長(zhǎng)時(shí)間高負(fù)載場(chǎng)景下,探測(cè)系統(tǒng)是否出現(xiàn)穩(wěn)定性缺陷。

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

針對(duì)系統(tǒng)接口,究竟哪些需要被納入壓測(cè)范疇?不同事務(wù)應(yīng)該以何種比例被調(diào)用,這是需要建模設(shè)計(jì)的,也是性能測(cè)試的難點(diǎn)之一。

通過對(duì)于項(xiàng)目架構(gòu)和業(yè)務(wù)場(chǎng)景分析,設(shè)計(jì)以下業(yè)務(wù)模型進(jìn)行模擬和測(cè)試:

場(chǎng)景1:簡(jiǎn)單業(yè)務(wù)場(chǎng)景

產(chǎn)品經(jīng)理:性能測(cè)試了解下?

場(chǎng)景2:混合業(yè)務(wù)場(chǎng)景

產(chǎn)品經(jīng)理:性能測(cè)試了解下?

3.3 加密驗(yàn)簽處理

由于系統(tǒng)對(duì)于所有事務(wù)請(qǐng)求都進(jìn)行了加密驗(yàn)簽處理,因此在本次性能測(cè)試中,需要對(duì)請(qǐng)求報(bào)文進(jìn)行一致的加密和簽名。處理邏輯如下:

  • 使用APP同樣的加密簽名代碼,導(dǎo)出jar包做為加密工具類
  • 使用jmeter前置處理器-beanshell處理器調(diào)用上述jar包方法實(shí)現(xiàn)請(qǐng)求參數(shù)加密
  • 將加密簽名后的請(qǐng)求參數(shù)存儲(chǔ)為變量,后續(xù)接口調(diào)用時(shí)使用

3.4 壓力梯度

對(duì)于3.2所述場(chǎng)景,分別進(jìn)行梯度加壓,從100并發(fā)開始,每次遞增100并發(fā)數(shù),直至到達(dá)系統(tǒng)瓶頸。

4. 測(cè)試結(jié)果

4.1 聚合報(bào)告

產(chǎn)品經(jīng)理:性能測(cè)試了解下?

場(chǎng)景1-10并發(fā)-循環(huán)5次

產(chǎn)品經(jīng)理:性能測(cè)試了解下?

場(chǎng)景1-500并發(fā)-循環(huán)1次

產(chǎn)品經(jīng)理:性能測(cè)試了解下?

場(chǎng)景1-550并發(fā)-循環(huán)1次

產(chǎn)品經(jīng)理:性能測(cè)試了解下?

4.2 系統(tǒng)吞吐量

場(chǎng)景1-550并發(fā)-循環(huán)1次

產(chǎn)品經(jīng)理:性能測(cè)試了解下?

場(chǎng)景2-450并發(fā)-循環(huán)10次

產(chǎn)品經(jīng)理:性能測(cè)試了解下?

4.3 資源占用率

最優(yōu)負(fù)載條件下:CPU使用率

產(chǎn)品經(jīng)理:性能測(cè)試了解下?

內(nèi)存占用率

產(chǎn)品經(jīng)理:性能測(cè)試了解下?

磁盤使用率

產(chǎn)品經(jīng)理:性能測(cè)試了解下?

5. 分析和建議

5.1 測(cè)試結(jié)論分析

經(jīng)過多次測(cè)試和數(shù)據(jù)報(bào)表分析,可以得出如下結(jié)論:

  • 當(dāng)總體并發(fā)用戶數(shù)為450-500時(shí),系統(tǒng)具有最優(yōu)性能表現(xiàn);當(dāng)事務(wù)并發(fā)數(shù)超過500時(shí),事務(wù)失敗率整體上升,系統(tǒng)到達(dá)性能拐點(diǎn)。
  • 多事務(wù)混合條件下,系統(tǒng)巔峰TPS在90左右,平均吞吐量在13-18/s。
  • 在小壓力條件下(10并發(fā)),最大事務(wù)響應(yīng)時(shí)間為查詢用戶信息事務(wù)的2042毫秒,平均在600毫秒左右系統(tǒng)。整體事務(wù)微觀響應(yīng)速度較優(yōu)。
  • 滿負(fù)載條件下,登錄具有最佳的性能表現(xiàn),平均響應(yīng)時(shí)間為7000-12000毫秒;查詢用戶信息事務(wù)性能較差,平均響應(yīng)時(shí)間在30000-40000區(qū)間。滿負(fù)載條件下系統(tǒng)整體微觀響應(yīng)時(shí)間較差。查詢用戶接口由于其使用極為頻繁,建議進(jìn)行SQL效率調(diào)優(yōu)
  • 系統(tǒng)資源方面,內(nèi)存占用率始終處于高位水平(90%以上),磁盤空間由于日志寫入而不斷被占用。

5.2 問題

測(cè)試過程中發(fā)現(xiàn)了如下顯著問題:

  • 加密驗(yàn)簽功能并未生效-現(xiàn)階段任何簽名均可通過驗(yàn)簽。屬于功能性問題,不影響性能表現(xiàn)。
  • 日志文件由于不斷寫入導(dǎo)致磁盤占滿,建議調(diào)低系統(tǒng)日志級(jí)別,并做好定期日志備份。
  • 內(nèi)存占用處于高位水平,需要進(jìn)一步探查原因。

作者:阿宅的產(chǎn)品筆記;公眾號(hào):阿宅的產(chǎn)品筆記

本文由 @阿宅的產(chǎn)品筆記 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來自Unsplash,基于CC0協(xié)議。

該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 目前還沒評(píng)論,等你發(fā)揮!