性能測試中會涉及很多性能相關的指標和術語,本節重點剖析核心的概念。
表示某個時間段內在服務器上保持登錄狀態的用戶。但在線用戶不一定是對服務器產生壓力的用戶,只有正在操作的活躍用戶才會對服務器產生壓力,在線只是一種狀態。
類似活躍用戶,表示某個時間段內與服務器保持交互的用戶,理論上這些用戶有同一時刻(即絕對并發)進行操作的可能(對這種可能性的度量稱為并發度》。相對并發的說法主要是為了區分絕對并發。
表示同一時間點 (嚴格地說是足夠短的時間段內)與服務器進行交互的用戶,一般通過測試工具提供的并發控制 (如JMeter的集合點)實現。
表示用戶每個操作后的暫停時間,或者叫作操作之間的間隔時間,此時間內用戶是不對服務器產生壓力的。如果想了解系統在極端情況下的性能表現,可以設置思考時間為0;而如果要預估系統能夠承受的最大壓力,就應該盡可能地模擬真實思考時間。
通常包括網絡傳輸請求的時間、服務器處理的時間,以及網絡傳輸響應的時間。而我們重點關心的應該是服務器處理的時間,這部分受到代碼處理請求的業務邏輯的影響,從中可以真正發現缺陷并對業務邏輯進行優化,而網絡傳輸請求和響應的時間很大程度上取決于網絡質量。
響應時間也就是JMeter術語中的Elapsed time,表示接收完所有響應內容的時間點減去請求開始發送的時間點。另外,Latency time表示接收到響應的第一個字節的時間點減去請求開始發送的時間點,Connection time表示建立連接所消耗的時間。
當關注響應時間時,不應該只關注平均響應時間。通常我們會采用95%的響應時間,即所有請求的響應時間按照從小到大排列,位于 95% 的響應時間。該值更有代表性,而平均響應時間未能有效地考慮波動性
指每秒處理的事務數,是直接反映系統性能的指標。該值越大,系統性能越好。通常如果個事務包含的請求就1個,那么這個值就是每秒處理請求數。另外還有個概念叫吞吐量,它除了用于描述網絡帶寬能力,也指單位時間內系統處理的請求數量,JMeter聚合報告中TPS就是用該術語顯示的。假如1個用戶在1s內完成1筆事務,則TPS明顯就是1; 如果某筆業務響應時間是1ms,則1個用戶在1s內能完成1000筆事務,則TPS就是1000了;如果某筆業務響應時間是1s,則1個用戶在1s內只能完成1筆事務,要想TPS達到1000,則至少需要1000個用戶。因此在1s內,1個用戶可以完成1000筆事務,1000個用戶也可以完成1000筆事務,這取決于業務響應時間。
方差和標準差都是用來描述一組數據的波動性的 (表現數據集中還是分散),標準差的平方就是方差。方差越大,數據的波動越大。
眾所周知,性能測試依賴于特定的硬件、軟件、應用服務和網絡資源等,所以在性能場景執行期間TPS可能表現為穩定,或者波動,或者遵循一定的趨勢上升或下降。由此可以根據離散系數提出一個TPS波動范圍的概念,并定義為TPS標準差除以TPS平均值。如果這個比值超過了一定的范圍,就認為這個性能點的TPS不夠穩定,也間接證明被測系統的響應波動大,不滿足性能期望。
另外,從上述的術語中不難發現,TPS、并發數與響應時間之間是有一定的關系的。假設平均響應時間為t (單位為毫秒),并發量為 C,每秒處理請求數為 g,則g =(1000/t)x c 就是這個關系。所以想要升高 g ,就只有兩條路: 降低t和升高 C。
對于降低t,只能靠優化代碼方式來實現,這取決于軟件工程師的編碼水平或架構設計。
對于升高C,通常 c 與服務器程序的請求處理模型關系比較大。如果服務器程序是“一個線程對應一個請求”的模式,那么c 的最大值就受制于服務器能支撐多少個線程;如果是“一個進程對應一個請求”的模式那么c 的最大值則受制于最大進程數。另外,在升高c 值的過程中,不得不注意的一點是,隨著線程/進程數增多,上下文切換、線程/進程調度開銷會增大,這會間接地顯著增大t 的值,因而不能讓 g 的值跟著c 的值等比升高。所以一味增大 c 值通常也不會有好結果,最合適的 c 值應該根據實測試驗得出。
有一種特殊情況: 若業務決定了該服務器提供的服務具有“數據量小、返回時間較長”的特征,即這是一個不忙但很慢的業務類型,那么可以采用NIO模式提供服務,例如Nginx就默認采用NIO模式。 在這種模式下,c 值不再與線程/進程數相關,而只是與“套接字連接數”相關。通常“套接字連接數”可以非常大,在經過特殊配置的Linux服務器上,可以同時支撐百萬級別的套接字連接數,在這種情況下c 值可以達到100萬。
在如此高的 c 值之下,就算 再大,也可以支撐一個很高的 q ,同時真正的線程/進程數可以只設置到跟CPU核數一致,以求最大化CPU利用率。當然,這一切的前提是該業務具有“數據量小、返回時間較長”的特征。
經過上述分析,在評定服務器的性能時,應該結合TPS和并發用戶數,以TPS為主、以并發用戶數為輔來衡量系統的性能。如果必須要用并發用戶數來衡量,則需要一個前提一一交易在多長時間內完成。因為在系統負載不高的情況下,將思考時間(思考時間的值等于交易響應時間)加到腳本中,并發用戶數基本可以增加一倍,所以用并發用戶數來衡量系統的性能沒太大的意義。
本文鏈接:http://www.tebozhan.com/showinfo-26-10498-0.html性能測試中的指標和術語
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: 讓程序員告別996,這款開發工具火了
下一篇: 如何分析性能測試中的基礎曲線模型