1. 程式人生 > >【性能測試】性能測試的知識梳理

【性能測試】性能測試的知識梳理

測試 繼續 得出 而且 raid1 使用情況 網絡協議 4.0 就會

吞吐量(TPS Transaction Per Second):

TPS = 請求數 / 平均響應時間

如:目前某遊戲日活躍用戶250W,假如80%用戶活躍時間集中在18:00-24:00,共6個小時。那麽可以去這6個小時時間為采樣時間。

TPS = 總請求數*采樣時間內用戶比率/采樣時間

套用公式可得:

TPS= 2,000,000 * 0.8 / 6*3,600s = 74.07 /s

響應時間=N1+N2+N3+N4+A1+A2+A3

N1,N2,N3,N4為網絡傳輸時間。N1為客戶端到客戶端路由器時間,N2為路由器到因特網時間,N3是因特網到服務器路由時間,N4是服務器路路有到服務器的時間。A1是應用服務器處理時間,A2是應用服務器到存儲服務器時間,A3是存儲服務器處理時間。

可以繼續細分下去,但是含義差不多。

緩存

緩存的概念在網絡,存儲,CPU中無處不再。網絡的緩存有DNS緩存服務器,CDN加速服務器,路有緩存,交換機,多媒體緩存服務器等。還有硬盤的緩存,CPU的1級緩存,2級緩存等。存儲中的應用,如MYSQL的緩存。操作系統的緩存等。這些緩存的存在都是為了加速,降低響應時間。但緩存也不是越多越好,有的緩存沒有設置好,反而會降低性能。例如,某個很大的存儲磁盤中,給他配置了很低的緩存,緩存命中就會很低,反而增加了匹配緩存的過程,占用了時間。

如果上個例子中,沒有緩存的話,那麽假設加上緩存後,速度提升多少呢?

TPS = 總請求數*采樣時間內用戶比率/(采樣時間*緩存因子)

緩存因子的值,可以根據實際情況計算得出。我假想了一個測試方法:先來一輪沒有緩存的測試,得出一個TPS1。然後再來一次有緩存的測試,得出TPS2。那麽緩存因子=TPS1/TPS2。這個方法的局限性很大,要求網絡環境,操作系統,存儲環境保持一致。否則數據就不太準確。更準確的計算方法還是要考慮每個設備之間所占用的時間。

IO:

IO的基本概念:

隨機訪問和連續訪問;

硬盤的讀取數據的原理就是磁頭讀取盤片的過程。如果要訪問的數據隨機分布到盤片的各處,那麽就是隨機訪問。如果訪問的數據是連續的,那麽就是連續訪問。

硬盤訪問數據時,會經過尋址,旋轉延遲,傳輸3個步驟。每個步驟都需要一定的時間。連續的數據可以幾乎不用尋址和旋轉延遲,所以傳出數據的數據等於硬盤的傳輸速度。

市場上常用硬盤的平均尋址時間:7200轉9ms ,10000轉 6ms ,15000轉 4ms

平均旋轉延遲=1/轉速/2

傳輸時間=傳輸數據的大小/傳輸速度

連續IO和並發IO。

連續:串行處理IO請求,一次只能處理一個IO請求。

並發:並行處理IO請求,一次能處理多個。但是每個磁盤依然只能處理多個,所以並發IO的場景,只是用於多個磁盤的陣列。如RAID0

IO的響應時間:

使用M/M/1 模型算法進行計算,目前我也在研究。

存儲陣列:

RAID0:將一個完整的數據分割成多個部分放在磁盤中。這樣可以並發讀取數據。不具備容災性,所以一旦磁盤壞了一個,數據就整個丟了。但是性能極高,讀寫速度是磁盤的整數倍。

RAID10:準備兩個磁盤,兩個磁盤都放一樣的數據。這樣讀取數據時,可以並發讀取,提高了讀的速度。但是寫的話因為要寫兩個盤,所以速度沒有變。如果用多個磁盤,那麽可以先鏡像,再條帶化,就是RAID10。可以壞多個盤,但是只能壞在一個條帶上。

RAID01:先條帶化,再鏡像。這種方法比RAID10要安全。因為如果只要不是壞了1對硬盤,那麽鏡像互相之間都能找到損壞的數據。

RAID5:奇偶校驗熱備盤,允許壞1個盤,可以內部計算得出壞了硬盤的數據,但性能會降低,因為要內部計算剩余的數據在哪裏。讀取性能幾乎等於磁盤數。寫入數據是(1/4)*磁盤數.

RAID6:和RAID5的加強版,允許壞兩個盤,讀取性能幾乎等於磁盤數的整數倍,寫入數據是(1/6)*磁盤盤

硬盤多的可以用RAID10或者RAID01

其他:

虛擬雲主機的存儲:優化方式在研究當中,因為無法像本地服務器那樣對硬盤(SSD,陣列)。估計只能從內存條的緩存中入手優化了。

NAS文件系統存儲:準備研究他們的性能。

網絡:

網絡傳輸過程中,網線,轉發器,路由器,交換機,帶寬,丟包率,網卡,網絡協議等,都是要考慮的因素。

綜上,個人覺得最難啃的骨頭是IO。網絡上的問題基本很少見,而且一旦出了問題,只有依賴於通信公司去解決,不會由我們軟件工作人員去解決。我們只能定位問題和解決本地網絡問題。萬維網中的問題如果沒有合適的渠道,一般難以解決。

軟件調優:

MYSQL:主要從索引,語法,緩存,連接數,BLOCK大小等維度去考慮

JVM:一個系統而復雜的過程,先設置參數拿到堆(heap)文件,然後用工具MAT分析堆中間中各個對象的使用情況。調優方法粗暴一點就是整數倍增加系統默認參數。但是實際上還要具體分析,因為算法不一樣。

算法關鍵字:計數法,標記-消除法,復制,標記-整理,分區(年輕代,年老代,永久代);強引用,弱引用,虛幻引用;

JAVA代碼調優:準備研究

TOMCAT:準備研究

NGINX:準備研究

其他軟件:遇到後研究

【性能測試】性能測試的知識梳理