性能測試的難點不在於測,在於測出的數據和實際的對照關係,以及測試出來的數據對性能的評估(究竟是好,仍是很差)。數據庫
淘寶性能測試白皮書,解決了個人4個問題:一、PV到TPS的轉換關係。二、TPS的波動標準。三、壓力變化以及測試類型。四、網頁測試的標準(惋惜不少數據都抹掉了)安全
一、PV到TPS的轉換服務器
日PV對於一個網站,很容易就統計出來,可是LoadRunner性能測試時,只有TPS可供參考。日PV和TPS之間如何對應?公式就是80%的日PV,發生在T小時內。則公式爲:網絡
TPS = 日PV * 80% / 24 * 60 * 60 * (T/24)架構
定義 R = 1萬 * 80% / 24 * 60 * 60 * (T/24) = 10000 * 24 * 0.8 / 24 * 3600 * T = 2.2222/Tide
TPS = 日PV(萬) * R 這裏的TPS就是平均的TPS。性能
能夠T的值代入,則求出R的值便可測試
T 6 8 10 12優化
R 0.3704 0.2778 0.2222 0.1852網站
10w 3.704 2.778 2.222 1.852
100w 37.04 27.78 22.22 18.52
1000w 370.4 277.8 222.2 185.2
1億 3704 2778 2222 1852
關於TPS 我再多說兩句,單就靜態頁面,TPS大概能到1W+,簡單數據庫操做大概2K+的樣子,用Cache大概能到5K+。
峯值的TPS,能夠從圖中看出來。
二、TPS的波動標準
TPS應該是一個比較平穩的曲線,而不是上下波動
TPS波動範圍 = TPS標準差/TPS平均值 * 100%
在5%內算是正常的
三、測試壓力變化
pdf中的圖1-8
a點:性能指望值
b點:高於指望,系統資源處於臨界點
c點:高於指望,拐點
d點:超過負載,系統崩潰
性能測試
a點到b點之間的系統性能
定義:狹義的性能測試,是指以性能預期目標爲前提,對系統不斷施加壓力,驗證系統在資源可接受範圍內,是否能達到性能預期。
負載測試
b點的系統性能
定義:狹義的負載測試,是指對系統不斷地增長壓力或增長必定壓力下的持續時間,直到系統的某項或多項性能指標達到極限,例如某種資源已經達到飽和狀態等。
壓力測試
b點到d點之間
定義:狹義的壓力測試,是指超過安全負載的狀況下,對系統不斷施加壓力,是經過肯定一個系統的瓶頸或不能接收用戶請求的性能點,來得到系統能提供的最大服務級別的測試。
穩定性測試
a點到b點之間
定義:狹義的穩定性測試,是指被測試系統在特定硬件、軟件、網絡環境條件下,給系統加載必定業務壓力,使系統運行一段較長時間,以此檢測系統是否穩定,通常穩定性測試時間爲n*12小時。
四、網站測試標準
==========================================================================
性能相關的系列文章:
LoadRunner利用ODBC編寫MySql腳本
LoadRunner壓力測試時監控服務器Linux的資源狀況
壓力測試衡量CPU的三個指標:CPU Utilization、Load Average和Context Switch Rate
高性能服務器架構(High-Performance Server Architecture)
網站性能測試PV到TPS的轉換以及TPS的波動
用GTmetrix來優化你的網頁(集成了YSlow、FireBug的功能)
Q&A
由於CSDN評論不知道爲何無法用了,因此貼在這裏吧
Q:yxt168118 可否請做者將TPS的T,在測試腳本中,怎麼定義說明一下?我是將某個關鍵操做定義爲一個事務(T),這樣測試出來的TPS很難達到10。
A:回覆 yxt168118:定義T transaction 事務,是根據測試目的來決定的,若是是性能測試,T定義爲一次請求,若是是可用性測試,T定義爲整個頁面的加載,主要看響應時間用戶是否能接受。TPS高低和操做的複雜程度、以及後臺擴展、以及T的定義是相關的。通常,單次的請求,單臺機器,百數量級上是正常的。另外,在一次請求中,不要每次都去初始化一些好比用戶等數據,若是有不少的數據庫操做,TPS也會低一些,若是達不到10,還須要優化,好比看看數據庫方面是否有優化的空間,好比索引。