TPS QPS RT TOP RT 吞吐量
一.系統吞吐量要素:
一個系統的吞吐量(承壓能力)與request對CPU的消耗、外部接口、IO等等緊密關聯。
單個reqeust 對CPU消耗越高,外部系統接口、IO影響速度越慢,系統吞吐能力越低,反之越高。
系統吞吐量幾個重要參數:QPS(TPS)、並發數、響應時間
QPS(TPS):每秒鍾request/事務 數量
並發數: 系統同時處理的request/事務數
響應時間: 一般取平均響應時間
推算出它們之間的關系:QPS(TPS)= 並發數/平均響應時間
一個系統吞吐量通常由QPS(TPS)、並發數兩個因素決定,每套系統這兩個值都有一個相對極限值,在應用場景訪問壓力下,只要某一項達到系統最高值,系統的吞吐量就上不去了,如果壓力繼續增大,系統的吞吐量反而會下降,原因是系統超負荷工作,上下文切換、內存等等其它消耗導致系統性能下降。
決定系統響應時間要素
性能測試的基本概念和計算公式
一、軟件性能的關注點
對一個軟件做性能測試時需要關注那些性能呢?
我們想想在軟件設計、部署、使用、維護中一共有哪些角色的參與,然后再考慮這些角色各自關注的性能點是什么,作為一個軟件性能測試工程師,我們又該關注什么?
首先,開發軟件的目的是為了讓用戶使用,我們先站在用戶的角度分析一下,用戶需要關注哪些性能。
對於用戶來說,當點擊一個按鈕、鏈接或發出一條指令開始,到系統把結果已用戶感知的形式展現出來為止,這個過程所消耗的時間是用戶對這個軟件性能的直觀印象。也就是我們所說的響應時間,當相應時間較小時,用戶體驗是很好的,當然用戶體驗的響應時間包括個人主觀因素和客觀響應時間,在設計軟件時,我們就需要考慮到如何更好地結合這兩部分達到用戶最佳的體驗。如:用戶在大數據量查詢時,我們可以將先提取出來的數據展示給用戶,在用戶看的過程中繼續進行數據檢索,這時用戶並不知道我們后台在做什么。
用戶關注的是用戶操作的響應時間。
其次,我們站在管理員的角度考慮需要關注的性能點。
1、 響應時間
2、 服務器資源使用情況是否合理
3、 應用服務器和數據庫資源使用是否合理
4、 系統能否實現擴展
5、 系統最多支持多少用戶訪問、系統最大業務處理量是多少
6、 系統性能可能存在的瓶頸在哪里
7、 更換那些設備可以提高性能
8、 系統能否支持7×24小時的業務訪問
再次,站在開發(設計)人員角度去考慮。
1、 架構設計是否合理
2、 數據庫設計是否合理
3、 代碼是否存在性能方面的問題
4、 系統中是否有不合理的內存使用方式
5、 系統中是否存在不合理的線程同步方式
6、 系統中是否存在不合理的資源競爭
那么站在性能測試工程師的角度,我們要關注什么呢?
一句話,我們要關注以上所有的性能點。
二、軟件性能的幾個主要術語
1、響應時間:ResponseTime響應時間
響應時間(RT)是指從客戶端發一個請求開始計時,到客戶端接收到從服務器端返回的響應結果結束所經歷的時間,響應時間由請求發送時間、網絡傳輸時間和服務器處理時間三部分組成。
網絡傳輸時間:N1+N2+N3+N4
應用服務器處理時間:A1+A3
數據庫服務器處理時間:A2
響應時間=N1+N2+N3+N4+A1+A3+A2
2、並發用戶數的計算公式
系統用戶數:系統額定的用戶數量,如一個OA系統,可能使用該系統的用戶總數是5000個,那么這個數量,就是系統用戶數。
同時在線用戶數:在一定的時間范圍內,最大的同時在線用戶數量。
同時在線用戶數=每秒請求數RPS(吞吐量)+並發連接數+平均用戶思考時間
平均並發用戶數的計算:C=nL / T
其中C是平均的並發用戶數,n是平均每天訪問用戶數(login session),L是一天內用戶從登錄到退出的平均時間(login session的平均時間),T是考察時間長度(一天內多長時間有用戶使用系統)
並發用戶數峰值計算:C^約等於C + 3*根號C
其中C^是並發用戶峰值,C是平均並發用戶數,該公式遵循泊松分布理論。
並發數計算:根據產品提供系統用戶量,算出每秒的訪問數,該數乘3倍上下就是並發數
3、吞吐量的計算公式
指單位時間內系統處理用戶的請求數
從業務角度看,吞吐量可以用:請求數/秒、頁面數/秒、人數/天或處理業務數/小時等單位來衡量
從網絡角度看,吞吐量可以用:字節/秒來衡量
對於交互式應用來說,吞吐量指標反映的是服務器承受的壓力,他能夠說明系統的負載能力
以不同方式表達的吞吐量可以說明不同層次的問題,例如,以字節數/秒方式可以表示數要受網絡基礎設施、服務器架構、應用服務器制約等方面的瓶頸;已請求數/秒的方式表示主要是受應用服務器和應用代碼的制約體現出的瓶頸。
當沒有遇到性能瓶頸的時候,吞吐量與並發數之間存在一定的聯系,並發數越高吞吐量越高;遇到瓶頸后並發數越高吞吐量下降
4、思考時間的計算公式
Think Time,從業務角度來看,這個時間指用戶進行操作時每個請求之間的時間間隔,而在做新能測試時,為了模擬這樣的時間間隔,引入了思考時間這個概念,來更加真實的模擬用戶的操作。
在吞吐量這個公式中F=VU * R / T說明吞吐量F是VU數量、每個用戶發出的請求數R和時間T的函數,而其中的R又可以用時間T和用戶思考時間TS來計算:R = T / TS
下面給出一個計算思考時間的一般步驟:
A、首先計算出系統的並發用戶數 C=nL / T F=R×C
B、統計出系統平均的吞吐量 F=VU * R / T R×C = VU * R / T
C、統計出平均每個用戶發出的請求數量 R=u*C*T/VU
D、根據公式計算出思考時間 TS=T/R
TOP
top顯示系統當前的進程和其他狀況,是一個動態顯示過程,即可以通過用戶按鍵來不斷刷新當前狀態.如果在前台執行該命令,它將獨占前台,直到用戶 終止該程序為止. 比較准確的說,top命令提供了實時的對系統處理器的狀態監視.它將顯示系統中CPU最“敏感”的任務列表.該命令可以按CPU使用.內存使用和執行時間 對任務進行排序;而且該命令的很多特性都可以通過交互式命令或者在個人定制文件中進行設定。
在linux系統中,top命令可謂是分析系統性能最方便的工具,而且top還是個交互式工具;通過top命令可以清楚地了解到正在執行的進程信息包括進程ID,內存占用率,CPU占用率等。其實就跟window的任務管理器類似。
運行top命令的結果如下:
第一行是任務隊列信息,跟 uptime 命令的執行結果類同,具體參數說明如下:
- 14:06:13 — 指當前系統時間
- up 2 days, 23:00 — 表示系統已經運行了2天23小時0分鍾(是指在這期間系統沒有重新啟動過,持續運行)
- 3 users — 當前有3個用戶登錄系統
- load average: 0.00, 0.00, 0.00 — load average后面的三個數分別是1分鍾、5分鍾、15分鍾的負載情況。
- load average數據是每隔5秒鍾檢查一次活躍的進程數,然后按特定算法計算出的數值。如果這個數除以邏輯CPU的數量,結果高於5的時候就表明系統在超負荷運轉了。
第二行,Tasks — 任務(進程),具體信息說明如下:
- 系統現在共有162個進程,其中處於運行中的有1個,161個在休眠(sleep),stoped狀態的有0個,zombie狀態(僵屍)的有0個,要特別留意zombie的進程哦。
第三行,cpu狀態信息,具體屬性說明如下:
- 0.1%us — 用戶空間占用CPU的百分比。
- 0.1%sy — 內核空間占用CPU的百分比。
- 0.0%ni — 改變過優先級的進程占用CPU的百分比
- 99.6%id — 空閑CPU百分比
- 0.2%wa — IO等待占用CPU的百分比
- 0.0%hi — 硬中斷(Hardware IRQ)占用CPU的百分比
- 0.0%si — 軟中斷(Software Interrupts)占用CPU的百分比
第四行, Mem內存狀態,具體信息說明如下:
- 16201614k total — 物理內存總量(15GB)
- 659960k used — 使用中的內存總量(0.6G)
- 9601812k free — 空閑內存總量(9G)
- 577412k buffers — 緩存的內存量(0.5G)
第五行,swap交換分區信息,具體信息說明如下:
- 16777208k total — 交換區總量(16G)
- 0k used — 使用的交換區總量(0K)
- 16777208k free — 空閑交換區總量(16G)
- 1805408k cached — 緩沖的交換區總量(1.7G)
第六行,空行。
第七行以下:各進程(任務)的狀態監控,列信息說明如下:
- PID — 進程id
- USER — 進程所有者
- PR — 進程優先級
- NI — nice值。負值表示高優先級,正值表示低優先級
- VIRT — 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES
- RES — 進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA
- SHR — 共享內存大小,單位kb
- S — 進程狀態。D=不可中斷的睡眠狀態 R=運行 S=睡眠 T=跟蹤/停止 Z=僵屍進程
- %CPU — 上次更新到現在的CPU時間占用百分比
- %MEM — 進程使用的物理內存百分比
- TIME+ — 進程占用的CPU時間總計,單位1/100秒
- COMMAND — 進程名稱(命令名/命令行)
-------------------------------------------------------------------------------------------------------------------------------------------------------------
top 命令參數:
- -b 批處理
- -c 顯示完整的 COMMAND
- -I 忽略失效過程
- -s 保密模式
- -S 累積模式
- -i<時間> 設置間隔時間
- -u<用戶名> 指定用戶名
- -p<進程號> 指定進程
- -n<次數> 循環顯示的次數
top 的交互命令(在top命令運行過程中輸入以下命令即可):
- q:退出程序。
- h或者? :顯示幫助畫面,給出一些簡短的命令總結說明。
- k :終止一個進程。系統將提示用戶輸入需要終止的進程PID,以及需要發送給該進程什么樣的信號。一般的終止進程可以使用15信號;如果不能正常結束那就使用信號9強制結束該進程。默認值是信號15。在安全模式中此命令被屏蔽。
- i:忽略閑置和僵屍進程。這是一個開關式命令。
- M:根據駐留內存大小進行排序。
- P:根據CPU使用百分比大小進行排序。
- T:根據時間/累計時間進行排序。
- W:將當前設置寫入~/.toprc文件中。這是寫top配置文件的推薦方法。
- r:重新安排一個進程的優先級別。系統提示用戶輸入需要改變的進程PID以及需要設置的進程優先級值。輸入一個正值將使優先級降低,反之則可以使該進程擁有更高的優先權。默認值是10。
- l:切換顯示平均負載和啟動時間信息。即顯示影藏第一行
- m:切換顯示內存信息。即顯示影藏內存行
- t:切換顯示進程和CPU狀態信息。即顯示影藏CPU行
- c:切換顯示命令名稱和完整命令行。 顯示完整的命令。 這個功能很有用。
- S:切換到累計模式。
- s:改變兩次刷新之間的延遲時間。系統將提示用戶輸入新的時間,單位為s。如果有小數,就換算成ms。輸入0值則系統將不斷刷新,默認值是5s。需要注意的是如果設置太小的時間,很可能會引起不斷刷新,從而根本來不及看清顯示的情況,而且系統負載也會大大增加。
- f或者F:從當前顯示中添加或者刪除項目。
- o或者O:改變顯示項目的順序。