架構(gòu)設(shè)計系列文章顺囊,請參見連接斯棒。
背景
性能優(yōu)化是技術(shù)治理的一部分,也是體現(xiàn)出技術(shù)人員真正價值的工作娇跟。從經(jīng)驗來看對于性能優(yōu)化的認(rèn)識與過程了解影響著系統(tǒng)的可持續(xù)發(fā)展的能力春弥,正因如此性能優(yōu)化就決定了系統(tǒng)是否可以有序的發(fā)展為一個優(yōu)良的系統(tǒng)。在性能優(yōu)化過程中對于系統(tǒng)中瓶頸的識別以及解決就成了性能優(yōu)化的需求與目標(biāo)贾惦。
性能優(yōu)化會有幾篇文章,分別說明性能優(yōu)化的不同的內(nèi)容敦捧,包括:環(huán)境定義须板,測試策略,測試過程兢卵,測試工具习瑰,優(yōu)化辦法。而對于性能優(yōu)化來說整體步驟可以簡單的劃分為:->
->
秽荤。
性能測試
性能優(yōu)化過程中性能測試是發(fā)現(xiàn)問題的過程甜奄,是性能優(yōu)化的先決條件。根據(jù)克努特優(yōu)化原則:過早優(yōu)化是萬惡之源窃款。在沒有實際數(shù)據(jù)指導(dǎo)的情況下就開啟優(yōu)化過程是很不明智的過程课兄,而且很容易方向跑偏。所以晨继,必須在明確的數(shù)據(jù)作為支撐的情況下再開始進(jìn)行性能優(yōu)化過程烟阐。
雖然經(jīng)常能夠聽到性能測試這個詞,但是在這個詞背后具體包含哪些內(nèi)容,在未經(jīng)過深入了解時也不可能一目了然的知道蜒茄。這里就本著技術(shù)的深度決定著成就的高度的態(tài)度唉擂,重新挖掘一下性能測試的內(nèi)容。
-
性能測試定義
性能測試是通過自動化的測試工具模擬多種正常檀葛、峰值以及異常負(fù)載條件來對系統(tǒng)的各項性能指標(biāo)進(jìn)行測試玩祟。
-
性能測試分類
下面一段來自百度百科中《性能測試》。根據(jù)不同的測試目的屿聋,性能測試可以分為多種類型空扎,常見的有如下幾類:
負(fù)載測試(Load Testing):負(fù)載測試是一種主要為了測試軟件系統(tǒng)是否達(dá)到需求文檔設(shè)計的目標(biāo),譬如軟件在一定時期內(nèi)胜臊,最大支持多少并發(fā)用戶數(shù)勺卢,軟件請求出錯率等,測試的主要是軟件系統(tǒng)的性能象对。
壓力測試(Stress Testing):強(qiáng)度測試也就是壓力測試黑忱,壓力測試主要是為了測試硬件系統(tǒng)是否達(dá)到需求文檔設(shè)計的性能目標(biāo),譬如在一定時期內(nèi)勒魔,系統(tǒng)的cpu利用率甫煞,內(nèi)存使用率,磁盤I/O吞吐率冠绢,網(wǎng)絡(luò)吞吐量等抚吠,壓力測試和負(fù)載測試最大的差別在于測試目的不同。
容量測試(Volume Testing):確定系統(tǒng)最大承受量弟胀,譬如系統(tǒng)最大用戶數(shù)楷力,最大存儲量,最多處理的數(shù)據(jù)流量等孵户。
-
性能測試類型:
下面一段來自百度百科中《性能測試》萧朝。性能測試中包含以下測試類型:
基準(zhǔn)測試:比較新的或未知測試對象與已知參照標(biāo)準(zhǔn)(如現(xiàn)有軟件或評測標(biāo)準(zhǔn))的性能。
爭用測試:核實測試對象對于多個主角對相同資源(數(shù)據(jù)記錄夏哭、內(nèi)存等)的請求的處理是否可以接受检柬。
性能配置:核實在操作條件保持不變的情況下,測試對象在使用不同配置時其性能行為的可接受性竖配。
負(fù)載測試:核實在保持配置不變的情況下何址,測試對象在不同操作條件(如不同用戶數(shù)、事務(wù)數(shù)等)下性能行為的可接受性进胯。
強(qiáng)度測試:核實測試對象性能行為在異秤米Γ或極端條件(如資源減少或用戶數(shù)過多)之下的可接受性。
容量測試:核實測試用戶同時使用軟件程序的最大數(shù)量龄减。
性能評價:通常是和用戶代表一起協(xié)作并且以多級方法執(zhí)行的项钮。
-
性能指標(biāo)
《4.DevOps-4.度量指標(biāo)--0.度量指標(biāo)(Metrics)》中已經(jīng)描述過指標(biāo)體系的建立與使用過程,而針對性能來說指標(biāo)幾乎已經(jīng)固定為幾個特殊的指標(biāo)。不過還是有很多性能指標(biāo)可以為性能分析提供很多幫助烁巫,在度量指標(biāo)中我們討論過指標(biāo)類型可以分為:
- Counter(計數(shù)器)
請求次數(shù)等 - Gauge(測量器)
瞬時內(nèi)存占用情況署隘,CPU使用情況等。 - Histogram(柱狀圖)
響應(yīng)時間等亚隙。 - Meters(碼表)
CPU Load數(shù)等磁餐。 - Timers(計時器)
請求執(zhí)行時長等。
-
其他
測試內(nèi)容
具像化測試內(nèi)容阿弃,例如對于區(qū)塊鏈交易頻次測試诊霹,那肯定是對整個區(qū)塊鏈系統(tǒng)中數(shù)據(jù)同步的過程進(jìn)行測試。對IoT環(huán)境進(jìn)行測試就要理清設(shè)備接入時使用的協(xié)議是那種渣淳,做通信的就要對于系統(tǒng)的整體交換速率作為系統(tǒng)性能表現(xiàn)脾还。環(huán)境定義
測試環(huán)境與被測環(huán)境的定義確定著要優(yōu)化的范圍。
性能分析
性能分析是針對性能測試結(jié)果數(shù)據(jù)或著性能測試過程數(shù)據(jù)進(jìn)行分析已找到性能瓶頸的方法入愧。在性能測試完成后不可分析就代表著不可以進(jìn)行優(yōu)化鄙漏。故結(jié)果的可分析性至關(guān)重要。現(xiàn)在性能分析已經(jīng)有了長足的進(jìn)步棺蛛,有很多現(xiàn)成的程序可以幫助進(jìn)行性能分析的工作怔蚌。而且還可以可視化的展示分析結(jié)果。不過有些時候仍然需要進(jìn)行人工的分析工作旁赊。性能分析的主要目標(biāo)是可視化桦踊。
在借助現(xiàn)階段流行的《可觀測性》的實現(xiàn)方式之后,性能分析過程可以分為兩類:APM终畅,事后分析類籍胯。APM可以得到運行期間的運行情況,而對性能測試結(jié)果進(jìn)行分析可以得到整體用戶直觀感受离福。一般情況下會結(jié)合兩種方式進(jìn)行芒炼。
性能優(yōu)化
針對性能分析的結(jié)果進(jìn)行優(yōu)化,不管是找到業(yè)務(wù)問題還是技術(shù)問題都需要在這里輸出相關(guān)的解決方案术徊。在技術(shù)上有一些通用的調(diào)優(yōu)方案,例如:阿里PTS上描述的性能測試 PTS > 性能測試基礎(chǔ)知識 > 測試分析及調(diào)優(yōu)鲸湃,有贊的一次假期故障引發(fā)的性能優(yōu)化思考赠涮。
總結(jié)
本文最主要說明的內(nèi)容是性能優(yōu)化的步驟以及步驟中可能的內(nèi)容,還有很多細(xì)節(jié)未明確出來暗挑。例如:通用性能指標(biāo)體系TPCC笋除、SPEC、SAP SD炸裆,性能分析過程中的分析方法垃它,性能調(diào)優(yōu)過程中的驗證過程等,性能調(diào)優(yōu)架構(gòu)級別調(diào)優(yōu)方法等等。這些都會在后面的文章中進(jìn)行更詳細(xì)的討論国拇。
參考
過早優(yōu)化是萬惡之源——克努特優(yōu)化原則 (Knuth's optimization principle)
性能測試的概念
性能優(yōu)化指南:性能優(yōu)化的一般性原則與方法
常用性能測試指標(biāo)解讀與使用價值分析
一次假期故障引發(fā)的性能優(yōu)化思考
【性能系列連載一】開篇:性能測試不可不知的“干貨”
Web「性能測試」知多少洛史?
性能分析
測試分析及調(diào)優(yōu)