操做
|
響應時間
|
打開一個網站
|
幾秒
|
數據庫查詢一條記錄(有索引)
|
十幾毫秒
|
機械磁盤一次尋址定位
|
4毫秒
|
從機械磁盤順序讀取1M數據
|
2毫秒
|
從SSD磁盤順序讀取1M數據
|
0.3毫秒
|
從遠程分佈式換成Redis讀取一個數據
|
0.5毫秒
|
從內存讀取1M數據
|
十幾微秒
|
Java程序本地方法調用
|
幾微秒
|
網絡傳輸2Kb數據
|
1微秒
|
tar zxvf http_load-09Mar2016.tar.gz
cd http_load-09Mar2016
make
sudo make install
http_load -p 併發訪問進程數 -f 訪問總數 須要訪問的URL文件 http_load -r 每秒訪問頻率 -s 訪問時間 須要訪問的URL文件 // 參數說明:一般參數pf一塊兒使用,參數rs一塊兒使用。
-parallel 簡寫 -p :併發的用戶進程數。 -fetches 簡寫 -f : 總計的訪問次數。 -rate 簡寫 -r : 每秒的訪問頻率。 -seconds 簡寫 -s :總計的訪問時間。
使用:php
48 fetches, 6 max parallel, 253264 bytes, in 10.0031 seconds // 說明在上面的測試中運行了48個請求,最大的併發進程數是6,總計傳輸的數據是253264bytes,運行的時間是10.0031秒 5276.33 mean bytes/connection // 說明每次鏈接平均傳輸的數據量是5276.33bytes。253264/48=5276.33 4.7985 fetches/sec, 25318.5 bytes/sec // 說明每秒的響應請求爲4.7985個,每秒傳遞的數據爲25318.5 bytes msecs/connect: 251.601 mean, 1493.45 max, 26.176 min // 說明每次鏈接的平均響應時間是251.601 毫秒,最大的響應時間1493.45 毫秒,最小的響應時間26.176 毫秒 msecs/first-response: 232.251 mean, 796.783 max, 39.402 min // 說明每次鏈接的平均返回時間是232.251 毫秒,最大的響應時間796.783 毫秒,最小的響應時間39.402 毫秒 HTTP response codes: code 200 -- 48 // 說明HTTP返回碼是200,一共48次。 主要參考fetches/sec、msecs/connect數值, 前者對應QPS,表示每秒的響應請求數,後者對應response time,表示每一個鏈接的響應時間。
1000 fetches, 5 max parallel, 2。607e+06 bytes, in 328.806 seconds 2607 mean bytes/connection 3.04131 fetches/sec, 7928.69 bytes/sec msecs/connect: 772.326 mean, 19478.3 max, 219.936 min msecs/first-response: 830.46 mean, 10006.4 max, 237.957 min HTTP response codes: code 200 — 1000 從上面結果看,目標網站僅僅可以承受每秒3次的訪問,不夠強壯。
2)apache ab數據庫
ab是Apache自帶的壓力測試工具,能夠用which ab查看ab命令所在的目錄。apache
ab -c 併發數 -n 請求數 URL // 參數說明: -n 在測試會話中所執行的請求個數。默認時,僅執行一個請求 -c 一次產生的請求個數。默認是一次一個。 -t 測試所進行的最大秒數。其內部隱含值是-n 50000。它可使對服務器的測試限制在一個固定的總時間之內。默認時,沒有時間限制。
使用:安全
執行ab -n 100 -c 100 http://127.0.0.1/test/test.php,含義爲同時處理100個請求並運行100次test.php,模擬100個併發用戶,對一個頁面發送100個請求。服務器
Server Software: Apache/2.4.23 // 服務器名稱,apache 版本2.4.23 Server Hostname: 127.0.0.1 // 服務器主機名 Server Port: 80 // 服務器端口 Document Path: /test/test.php // 請求的URL中的根絕對路徑,經過該文件的後綴名,咱們通常能夠了解該請求的類型 Document Length: 54 bytes // HTTP響應數據的正文長度 Concurrency Level: 100 // 併發用戶數 Time taken for tests: 0.085 seconds // 整個測試持續的時間,全部這些請求被處理完成所花費的總時間 Complete requests: 100 // 完成的請求數量 Failed requests: 0 // 失敗的請求數量 Total transferred: 25600 bytes // 全部請求的響應數據長度總和,包括每一個HTTP響應數據的頭信息和正文數據的長度 HTML transferred: 5400 bytes // 全部請求的響應數據中正文數據的總和,也就是減去了Total transferred中HTTP響應數據中的頭信息的長度。 Requests per second: 1177.59 [#/sec] (mean) // 吞吐率,計算公式:Complete requests/Time taken for tests。至關於每秒事務數,後面括號中的 mean 表示這是一個平均值。吞吐率越高,服務器性能越好。 Time per request: 84.919 [ms] (mean) // 用戶平均請求等待時間,計算公式:Time token for tests/(Complete requests/Concurrency Level)。至關於平均事務響應時間 ,後面括號中的 mean 表示這是一個平均值。 Time per request: 0.849 [ms] (mean, across all concurrent requests) // 服務器平均請求等待時間,計算公式:Time taken for tests/Complete requests,正好是吞吐率的倒數。也能夠這麼統計:Time per request/Concurrency Level。 Transfer rate: 294.40 [Kbytes/sec] received //這些請求在單位時間內從服務器獲取的數據長度,即平均每秒網絡上的流量,計算公式:Total trnasferred/ Time taken for tests,這個統計很好的說明服務器的處理能力達到極限時,其出口寬帶的需求量,能夠幫助排除是否存在網絡流量過大致使響應時間延長的問題。 Connection Times (ms) min mean[+/-sd] median max Connect: 1 2 0.4 2 3 Processing: 6 44 23.4 46 81 Waiting: 6 44 23.5 46 81 Total: 8 46 23.1 47 82 // 網絡上消耗的時間的分解 Percentage of the requests served within a certain time (ms) 50% 47 66% 60 75% 66 80% 72 90% 76 95% 80 98% 82 99% 82 100% 82 (longest request) // 這部分數據用於描述每一個請求處理時間的分佈狀況,好比以上測試,66%的請求處理時間都不超過60ms,這個處理時間是指前面的Time per request,即對於單個用戶而言,平均每一個請求的處理時間。
併發請求量稍微高一點(200,300以上)就會報apr_socket_recv: Connection reset by peer 的錯。網絡
siege -c 併發數 -t 運行測試時間 URL siege -c 併發量 -r 重複次數 -f URL // 參數說明:-r和-t通常不一樣時使用 -c 200 指定併發數200 -r 5 指定測試的次數5 -t 5 持續測試5分鐘,-t若是不帶單位,默認是分鐘,s表示秒。 -f urls.txt 指定url的文件 -i internet的簡寫,隨機發送url -b 請求無需等待 delay=0
使用:併發
執行siege -c 10 -r 5 -f urllist.txt,含義爲10個併發對urllist文件發送請求5次。運維
Transactions: 300 hits // 總共測試次數,完成300次處理 Availability: 100.00 % // 成功次數百分比,100.00 % 成功率 Elapsed time: 31.36 secs // 總共用時31.36秒 Data transferred: 0.43 MB // 共數據傳輸0.43 MB Response time: 0.90 secs // 響應用時0.90秒 Transaction rate: 9.57 trans/sec // 平均每秒完成 9.57 次處理 Throughput: 0.01 MB/sec // 吞吐率,平均每秒傳送數據 Concurrency: 8.62 // 最高併發數 Successful transactions: 250 // 成功請求數 Failed transactions: 0 // 失敗請求數 Longest transaction: 3.66 // 每次傳輸所花最長時間 Shortest transaction: 0.50 // 每次傳輸所花最短期