性能測試指標及問題排查

一、軟件性能測試目標

軟件性能測試的目的主要有以下三點:

1. 評價系統當前性能,判斷系統是否滿足預期的性能需求。

2. 尋找軟件系統可能存在的性能問題,定位性能瓶頸並解決問題。

3. 判定軟件系統的性能表現,預見系統負載壓力,在應用部署之前,評估系統性能。

而對於用戶來說,則最關注的是當前系統:

1.是否滿足上線性能要求?

2.系統極限承載如何?

3.系統穩定性如何?

二、軟件性能測試中關鍵指標

資源指標

CPU使用率:指用戶進程與系統進程消耗的CPU時間百分比,長時間情況下,一般可接受上限不超過85%。

內存利用率:內存利用率=(1-空閒內存/總內存大小)*100%,一般至少有10%可用內存,內存使用率可接受上限爲85%。

磁盤I/O: 磁盤主要用於存取數據,因此當說到IO操作的時候,就會存在兩種相對應的操作,存數據的時候對應的是寫IO操作,取數據的時候對應的是是讀IO操作,一般使用% Disk Time(磁盤用於讀寫操作所佔用的時間百分比)度量磁盤讀寫性能。

網絡帶寬:一般使用計數器Bytes Total/sec來度量,Bytes Total/sec表示爲發送和接收字節的速率,包括幀字符在內。判斷網絡連接速度是否是瓶頸,可以用該計數器的值和目前網絡的帶寬比較。

系統指標:

併發用戶數:某一物理時刻同時向系統提交請求的用戶數。

在線用戶數:某段時間內訪問系統的用戶數,這些用戶並不一定同時向系統提交請求。

平均響應時間:系統處理事務的響應時間的平均值。事務的響應時間是從客戶端提交訪問請求到客戶端接收到服務器響應所消耗的時間。對於系統快速響應類頁面,一般響應時間爲3秒左右。

事務成功率:性能測試中,定義事務用於度量一個或者多個業務流程的性能指標,如用戶登錄、保存訂單、提交訂單操作均可定義爲事務,如下圖所示:

單位時間內系統可以成功完成多少個定義的事務,在一定程度上反應了系統的處理能力,一般以事務成功率來度量,計算公式如下所示:

超時錯誤率:主要指事務由於超時或系統內部其它錯誤導致失敗佔總事務的比率。

三、性能問題排查的過程

在性能測試過程中,如果出現性能問題,需要測試人員重點關注資源指標和系統指標或者應用性能數據,系統指標是直接觀測到的測試數據,比如響應時間過長,事物請求成功率低,超時錯誤率高等等。當系統指標出現問題時一般會表現在資源指標上,比如cpu高,內存佔用多,網絡寬帶佔用高,連接數多等。

當觀測到系統資源異常時,比如響應時間長,事物成功率低,超時錯誤率高等情況時。應該先查應用相關信息,比如日誌,應用監控、數據庫等等信息,如果這些信息沒有問題,再對資源信息進行分析。資源信息分析如下。

CPU問題分析:一般情況下CPU滿負荷工作,有時候並不能判定爲CPU出現瓶頸,比如Linux總是試圖要CPU儘可能的繁忙,使得任務的吞吐量最大化,即CPU儘可能最大化使用。因此,一般判斷CPU爲瓶頸,主要從兩方面:一是CPU空閒持續爲0,二是運行隊列大於CPU核數(經驗值3-4倍),即可判定存在瓶頸,對於CPU高消耗主要由什麼引起的,可能是應用程序不合理造成,也可能是硬件資源不足,需要具體問題具體分析,比如問題SQL語句引起,則需要跟蹤並優化引起CPU使用過高的SQL語句。

內存問題分析:一般至少有10%可用內存,內存使用率可接受上限爲85%。當空閒內存變小時,系統開始頻繁地調動磁盤頁面文件,空閒內存過小可能是內存不足或內存泄漏引起,需要根據系統實際情況監控分析。

磁盤I/O問題分析:磁盤I/O對於數據庫服務器、文件服務器、流媒體服務器系統來說,更容易成爲瓶頸,一般從以下幾個方面對磁盤I/O進行分析判斷:

每磁盤I/O數可用來與磁盤的I/O能力進行對比,如果經過計算得到的每磁盤I/O數超過了磁盤標稱的I/O能力,則說明確實存在磁盤的性能瓶頸。

監控磁盤讀寫,如果磁盤長時間進行大數據量讀寫操作,且cpu等待超過20%,則說明磁盤I/O存在問題,考慮提高磁盤I/O讀寫性能。

網絡帶寬問題分析:判斷網絡帶寬是否是系統運行性能瓶頸的首要條件是網絡帶寬是否會影響系統交易執行性能。例如:減小網絡帶寬,併發用戶數、響應時間與事務通過率等性能指標是否不能接受;或者增加網絡帶寬,併發用戶數、響應時間與事務通過率等性能指標會得到明顯提高。

在實際性能測試中,如果發現始終報連接超時,而實際手工訪問可以正常訪問,可以通過ping應用服務器IP或網關IP,如果出現網絡嚴重延遲或丟包,則說明網絡不穩定,需要檢查網絡。

通過對資源指標的分析,實際上各個方面都是互相依賴的,不能孤立的單從某個方面進行排查。當一個方面出現性能問題時,往往會引發其他方面的性能問題,例如,大量的磁盤讀寫勢必消耗CPU和IO資源,而內存的不足會導致頻繁地進行內存頁寫入磁盤、磁盤寫到內存的操作,造成磁盤IO瓶頸,同時,大量的網絡流量也會造成CPU過載,所以,在分析性能問題時,需要從各個方面進行考慮。

軟件性能測試是執行、監控、分析、調優不斷進行的過程,即監控是爲分析提供更多的參考數據,分析是爲了進行調優,調優是解決當前系統存在的性能瓶頸,爲用戶提供更好、更快的客戶體驗。由於分析、調優需要根據具體問題進行具體分析,本文未做過多說明,只對通用的關鍵指標進行監控分析,建議在實際工作中可從資源指標與系統指標兩個方面,層層檢測、步步排查,性能問題就無處藏身,一旦找到出現問題的原因,性能問題也就迎刃而解!

說明:本文部分內容來源於網絡。

2019年連續五十一天修心 土司於北京

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章