天天看點

性能名額概述

如何測量性能呢?雖然我們之前提到說,性能是終端使用者的感覺,但是我們依然需要一些KPI(名額)來進行衡量。

我們将KPI主要分為服務導向和效率導向兩大類:

服務導向分為可用性和響應時間:

可用性:程式對于使用者的可使用時間,可使用是指程式不會不響應或者超過可接受的響應時間。較低的可用性對于使用者而言是緻命的,因為即便是短時間的不可用,也可能會造成絕大的損失。 比如阿裡雲提供的我們最常用的ECS服務,可用性99.95%,我們按照1年365天計算,一年出現失誤的時間為:365*24**0.0005=4.38小時,也就是一年内,他們的ECS在4.38小時是不可用的,即無法通路或者響應時間超出他們對客戶的承諾。

響應時間:這個最為直覺,就是使用者從送出請求到擷取到擷取到請求資料的時間。雖然最容易了解,在真實中卻不容易測試,因為要考慮的因素很多,如:伺服器的帶寬、用戶端和伺服器的通訊方式和距離、用戶端的效率等等。

效率導向分為吞吐量和使用率:

吞吐量:某個事件發生的頻率,例如網站的特定時間的點選量。實際測量中需要考慮的内容也較多,拿一個APP來說,考慮吞吐量的時候,起碼要考慮:線上使用者數、通路某個功能的使用者數、瞬時并發、特定時間并發等。

使用率:被服務所使用的資源的使用率,如伺服器網絡帶寬的占比、100個線上使用者時記憶體的使用率。一般至少包括:CPU、記憶體、帶寬、磁盤I/O、磁盤使用率。

通過這些KPI我們來衡量性能的情況。

性能分析的綜合性很強,單獨測算某個KPI是較為簡單的,但是意義缺不大,做好性能分析需要将衆多KPI名額按照時間軸或者事件軸放到一起進行分析,時間或事件軸很重要。如果你的性能報告中的KPI是分開的,負責人肯定會崩潰掉,因為根本無法支撐你的分析結果。我就碰到過一次,手下的一個測試負責人(在IBM很多年工作經驗)給我的性能報告,竟然沒有将并發使用者數和伺服器和DB的CPU、記憶體和帶寬關聯到一起,我看後就崩潰了,将其叫來問并發50人和100人的時候,各資源狀态是如何,單獨提給我CPU使用率、記憶體使用率有什麼用,直接打回去讓重新分析。

性能名額一般都是監控軟體進行監測的,檢測項的多少取決于工具,windows伺服器提供了數以百計的檢測項. UNIX/LINUX提供了 top vmstat iostat SAR等監測工具. 現在流行的雲伺服器如阿裡雲 亞馬遜的AWS都提供了一系列豐富的監控項, 可以滿足一般的需求.

例如:

CPU使用率

處理器隊列長度

每秒的上下文切換

記憶體使用率

每秒記憶體分頁錯誤

每秒的記憶體緩存錯誤

每秒記憶體頁面讀取

磁盤空間

磁盤的請求數

資料包的丢包率和錯誤率