您好,登錄后才能下訂單哦!
如何進行性能測試中服務器關鍵性能指標的淺析,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
在對互聯網服務進行服務端性能測試時,主要關注兩方面的性能指標:
業務指標:如吞吐量(QPS、TPS)、響應時間(RT)、并發數、業務成功率等
資源指標:如CPU、內存、Disk I/O、Network I/O等資源的消耗情況
下面主要介紹一些廣泛適用的、基本的資源指標以及這些指標在Linux服務器的獲取方式。
關于CPU資源,有三個重要概念是我們需要關注的:使用率、運行隊列和上下文切換。
CPU使用率(CPU Utilization Percentages):有進程處于Running狀態的時間/總時間。
性能測試指標中,CPU使用率通常用us + sy來計算,其可接受上限通常在70%~80%。另外需要注意的是,在測試過程中,如果sy的值長期大于25%,應該關注in(系統中斷)和cs(上下文切換)的數值,并根據被測應用的實現邏輯來分析是否合理。
運行隊列進程數(Processes on run queue):Running狀態 + Waiting狀態的進程數,展示了正在運行和等待CPU資源的任務數,可以看作CPU的工作清單,是判斷CPU資源是否成為瓶頸的重要依據。vmstat通過r的值來體現:
r: 可運行進程數,包括正在運行(Running)和已就緒等待運行(Waiting)的。
如果r的值等于系統CPU總核數,則說明CPU已經滿負荷。在負載測試中,其可接受上限通常不超過CPU核數的2倍。
上下文切換(Context Switches):簡單來說,context指CPU寄存器和程序計數器在某時間點的內容,(進程)上下文切換即kernel掛起一個進程并將該進程此時的狀態存儲到內存,然后從內存中恢復下一個要執行的進程原來的狀態到寄存器,從其上次暫停的執行代碼開始繼續執行至頻繁的上下文切換將導致sy值增長。vmstat通過cs的值來體現:
另外還有一個指標用來作為系統在一段時間內的負載情況的參考:
平均負載Load Average:在UNIX系統中,Load是對系統工作量的度量。Load取值有兩種情況,多數UNIX系統取運行隊列的值(vmstat輸出的r),而Linux系統取運行隊列的值 + 處于task_uninterruptible狀態的進程數(vmstat輸出的b),所以會出現CPU使用率不高但Load值很高的情況。Load Average就是在一段時間內的平均負載,系統工具top、uptime等提供1分鐘、5分鐘和15分鐘的平均負載值。
講到的內存,包括物理內存和虛擬內存,性能測試工具物理內存和硬盤上的一塊空間(SWAP)組合起來作為虛擬內存(Virtual Memory)為進程的運行提供一個連續的內存空間,這樣的好處是進程可用的內存變大了, 性能測試工具但需要注意的是,SWAP的讀寫速度遠低于物理內存,并且物理內存和swap之間的數據交換會增加系統負擔。虛擬內存被分成頁(x86系統默認頁大小為4k),內核讀寫虛擬內存以頁為單位,當物理內存空間不足時,內存調度會將物理內存上不常使用的內存頁數據存儲到磁盤的SWAP空間,物理內存與swap空間之間的數據交換過程稱為頁面交換(Paging)。
可用內存(free memory):內存占用的直觀數據,vmstat輸出free的值,可用內存過小將影響整個系統的運行效率,對于穩定運行的系統,free可接受的范圍通常應該大于物理內存的20%,即內存占用應該小于物理內存的80%。在壓力測試時,系統內存資源的情況應該用可用內存結合頁面交換情況來判斷,如果可以內存很少,但頁面交換也很少,此時可以認為內存資源還對系統性能構成嚴重影響。
頁面交換(Paging):頁面交換包括從SWAP交換到內存和從內存交換到SWAP,如果系統出現頻繁的頁面交換,需要引起注意。可以從vmstat的si和so獲取:
si:每秒從SWAP讀取到內存的數據大小
so:每秒從內存寫入到SWAP的數據大小
SWAP空間占用:可以從vmstat的swpd來獲取當前SWAP空間的使用情況,應該和頁面交換結合來分析,比如當swpd不為0,但si,so持續保持為0時,內存資源并沒有成為系統的瓶頸。
磁盤通常是系統中最慢的一環,一是其自身速度慢,即使是SSD,其讀寫速度與內存都還存在數量級的差距,二是其離CPU最遠。另外需要說明的是磁盤IO分為隨機IO和順序IO兩種類型,在性能測試中應該先了解被測系統是偏向哪種類型。
隨機IO:隨機讀寫數據,讀寫請求多,每次讀寫的數據量較小,其IO速度更依賴于磁盤每秒能IO次數(IOPS)。
順序IO:順序請求大量數據,讀寫請求個數相對較少,每次讀寫的數據量較大,順序IO更重視每次IO的數據吞吐量。
對于磁盤,首要關注使用率,IOPS和數據吞吐量,在Linux服務區,可以使用iostat來獲取這些數據。
(設備)使用率:統計過程中處理I/O請求的時間與統計時間的百分比,即iostat輸出中的%util,如果該值大于60%,很可能降低系統的性能表現。
IOPS:每秒處理讀/寫請求的數量,即iostat輸出中的r/s和w/s,個人PC的機械硬盤IOPS一般在100左右,而各種公有云/私有云的普通服務器,也只在百這個數量級。預先獲取到所用服務區的IOPS能力,然后在性能測試中監控試試的IOPS數據,來衡量當前的磁盤是否能滿足系統的IO需求。
數據吞吐量:每秒讀/寫的數據大小,即iostat輸出中的rkB/s和wkB/s,通常磁盤的數據吞吐量與IO類型有直接關系,順序IO的吞吐能力明顯優與隨機讀寫,可以預先測得磁盤在隨機IO和順序IO下的吞吐量,以便于測試時監控到的數據進行比較衡量。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。