1. 一般衡量網站性能有哪些指標?
性能指標主要有響應時間,吞吐量,並發量,性能計數器。
1)響應時間
指應用執行一個操作需要的時間,即從發出請求到最后收到響應數據所需要的時間。
系統常用操作響應時間表
操作
|
響應時間
|
打開一個網站
|
幾秒
|
數據庫查詢一條記錄(有索引)
|
十幾毫秒
|
機械磁盤一次尋址定位
|
4毫秒
|
從機械磁盤順序讀取1M數據
|
2毫秒
|
從SSD磁盤順序讀取1M數據
|
0.3毫秒
|
從遠程分布式換成Redis讀取一個數據
|
0.5毫秒
|
從內存讀取1M數據
|
十幾微秒
|
Java程序本地方法調用
|
幾微秒
|
網絡傳輸2Kb數據
|
1微秒
|
實踐中通常采用的辦法是重復請求,比如一個請求操作重復執行1萬次,測試一萬次執行的總響應時間之和,然后除以1萬,就得到單次請求的響應時間。
2)吞吐量
指單位時間內系統處理的請求數量,體現系統的整體處理能力。對於網站,可用“請求數/秒”、“頁面數/秒”或“訪問人數/天”、“處理業務數/小時”等來衡量。重要指標有TPS(每秒處理的事物數)、QPS(每秒查詢的請求數)、HPS(每秒HTTP請求數)等。
3)並發量
指系統能夠同時處理的請求的數目,這個數字反映了系統的負載性能。對於網站而言,並發數指網站用戶同時提交請求的用戶數目。
4)性能計數器
描述服務器或操作系統性能的一些數據指標。如System Load、對象與線程數、內存使用、CPU使用、磁盤與網絡I/O等使用情況。通過對這些指標設置報警閾值,當監控系統發現性能計數器超過閾值時,就向開發人員和運維報警,及時發現異常並處理。
2. 怎么測試網站性能?
性能測試具體可以細分為性能測試、負載測試、壓力測試、穩定性測試。
1)性能測試
以系統設計初期規划的性能指標為預期目標,對系統不斷施加壓力,驗證系統在資源可接受范圍內是否能達到預期。
2)負載測試
對系統不斷增加並發請求以增加系統壓力,直到系統的某項或多項性能指標達到安全臨界值,這時繼續對系統施加壓力,系統的處理能力不但不會提高,反而會下降。
3)壓力測試
超過安全負載的情況下,對系統施加壓力,直到系統崩潰或不能再處理任何請求,以此獲得系統最大壓力承受能力。
4)穩定性測試
被測試系統在特定硬件、軟件、網絡環境條件下,給系統加載一定業務壓力,使系統運行一段較長時間,以此檢驗系統是否穩定。
3. 怎么進行壓力測試?
壓力測試工具有http_load、apache ab、siege。
1)http_load
下載:
http://acme.com/software/http_load/(點擊Fetch the software即可)
安裝:
yum -y install gcc gcc-c++ #安裝GCC編輯器--若已安裝請忽略 tar xzvf http_load-09mar2106.tar.gz #解壓http_load壓縮包 cd http_load-12mar2006 #進入http_load目錄 mkdir /usr/local/man #創建目錄 make && make install #編譯並安裝
命令格式:
http_load -p 並發訪問進程數 -f 訪問總數 需要訪問的URL文件 http_load -r 每秒訪問頻率 -s 訪問時間 需要訪問的URL文件 // 參數說明:通常參數pf一起使用,參數rs一起使用。 -parallel 簡寫 -p :並發的用戶進程數。 -fetches 簡寫 -f : 總計的訪問次數。 -rate 簡寫 -r : 每秒的訪問頻率。 -seconds 簡寫 -s :總計的訪問時間。
使用:
新建一個urls.txt,urls.txt 是一個url 列表,每個url 單獨的一行。
在文件中加入一行:http:/.wwwkwx.gd/(不能有任何空格存在,否則會報unknown protocol )
① 測試網站是否能承受住預期的訪問壓力
執行http_load -rate 5 -seconds 10 urls.txt,含義為
在10秒內保持一定的頻率訪問目標url。
結果分析:
41 fetches, 1020 max parallel, 851898 bytes, in 10.0008 seconds # 一共請求連接41次,最大並發線程1020個,持續10.0008秒內,總傳輸速率為 851898bytes 20778 mean bytes/connection #每次請求連接平均數據量(851898÷41) 4.09969 fetches/sec, 85183.3 bytes/sec #每秒的響應請求連接數為4.09969個,每秒傳輸的數據為85183.3btyes/毫秒 msecs/connect: 264.607 mean, 269.482 max, 262.187 min #每次連接平均響應時間:264.607毫秒,最大時間:269.482毫秒,最小時間:262.187毫秒 msecs/first-response: 1949.27 mean, 5394.21 max, 380.501 min #每次連接平均返回時間:1949.27毫秒,最大時間:5394.21毫秒,最小時間:380.501毫秒 HTTP response codes: code 200 -- 41 #HTTP返回碼:200 ,一共41次。
主要參考fetches/sec、msecs/connect數值, 前者對應QPS,表示每秒的響應請求數,后者對應response time,表示每個連接的響應時間。