安裝ab測試工具 ab工具幫助 ab是Apache超文本傳輸協議(HTTP)的性能測試工具。其設計意圖是描繪當前所安裝的Apache的執行性能,主要是顯示你安裝的Apache每秒可以處理多少個請求。 使用舉例: ...
吞吐率(Requests per second)
概念:伺服器併發處理能力的量化描述,單位是reqs/s,指的是某個併發用戶數下單位時間內處理的請求數。某個併發用戶數下單位時間內能處理的最大請求數,稱之為最大吞吐率。
計算公式:總請求數 / 處理完成這些請求數所花費的時間,即
Request per second = Complete requests / Time taken for tests
QPS(每秒查詢數)、TPS(每秒事務數)是吞吐量的常用量化指標,另外還有HPS(每秒HTTP請求數)。
跟吞吐量有關的幾個重要是:併發數、響應時間。
QPS(TPS),併發數、響應時間它們三者之間的關係是:
QPS(TPS)= 併發數/平均響應時間
對於無併發的應用系統而言,吞吐量與響應時間成嚴格的反比關係,實際上此時吞吐量就是響應時間的倒數。前面已經說過,對於單用戶的系統,響應時間(或者系統響應時間和應用延遲時間)可以很好地度量系統的性能,但對於併發系統,通常需要用吞吐量作為性能指標。
對於一個多用戶的系統,如果只有一個用戶使用時系統的平均響應時間是t,當有你n個用戶使用時,每個用戶看到的響應時間通常並不是n×t,而往往比n×t小很多(當然,在某些特殊情況下也可能比n×t大,甚至大很多)。
這是因為處理每個請求需要用到很多資源,由於每個請求的處理過程中有許多不走難以併發執行,這導致在具體的一個時間點,所占資源往往並不多。也就是說在處理單個請求時,在每個時間點都可能有許多資源被閑置,當處理多個請求時,
如果資源配置合理,每個用戶看到的平均響應時間並不隨用戶數的增加而線性增加。實際上,不同系統的平均響應時間隨用戶數增加而增長的速度也不大相同,這也是採用吞吐量來度量併發系統的性能的主要原因。一般而言,吞吐量是一個比較通用的指標,兩個具有不同用戶數和用戶使用模式的系統,
如果其最大吞吐量基本一致,則可以判斷兩個系統的處理能力基本一致。
併發連接數(The number of concurrent connections)
概念:某個時刻伺服器所接受的請求數目,簡單的講,就是一個會話。
併發用戶數(The number of concurrent users,Concurrency Level)
概念:要註意區分這個概念和併發連接數之間的區別,一個用戶可能同時會產生多個會話,也即連接數。
併發用戶數是指系統可以同時承載的正常使用系統功能的用戶的數量。與吞吐量相比,併發用戶數是一個更直觀但也更籠統的性能指標。實際上,併發用戶數是一個非常不准確的指標,因為用戶不同的使用模式會導致不同用戶在單位時間發出不同數量的請求。
一網站系統為例,假設用戶只有註冊後才能使用,但註冊用戶並不是每時每刻都在使用該網站,因此具體一個時刻只有部分註冊用戶同時線上,線上用戶就在瀏覽網站時會花很多時間閱讀網站上的信息,因而具體一個時刻只有部分線上用戶同時向系統發出請求。
這樣,對於網站系統我們會有三個關於用戶數的統計數字:註冊用戶數、線上用戶數和同時發請求用戶數。由於註冊用戶可能長時間不登陸網站,使用註冊用戶數作為性能指標會造成很大的誤差。而線上用戶數和同事發請求用戶數都可以作為性能指標。
相比而言,以線上用戶作為性能指標更直觀些,而以同時發請求用戶數作為性能指標更準確些。
用戶平均請求等待時間(Time per request)
計算公式:處理完成所有請求數所花費的時間/ (總請求數 / 併發用戶數),即
Time per request = Time taken for tests /( Complete requests / Concurrency Level)
伺服器平均請求等待時間(Time per request: across all concurrent requests)
計算公式:處理完成所有請求數所花費的時間 / 總請求數,即
Time taken for / testsComplete requests
可以看到,它是吞吐率的倒數。
同時,它也=用戶平均請求等待時間/併發用戶數,即Time per request / Concurrency Level
QPS每秒查詢率(Query Per Second)
每秒查詢率QPS是對一個特定的查詢伺服器在規定時間內所處理流量多少的衡量標準,在網際網路上,作為功能變數名稱系統伺服器的機器的性能經常用每秒查詢率來衡量。對應fetches/sec,即每秒的響應請求數,也即是最大吞吐能力。 (看來是類似於TPS,只是應用於特定場景的吞吐量)
響應時間(RT)
響應時間是指系統對請求作出響應的時間。直觀上看,這個指標與人對軟體性能的主觀感受是非常一致的,因為它完整地記錄了整個電腦系統處理請求的時間。由於一個系統通常會提供許多功能,而不同功能的處理邏輯也千差萬別,因而不同功能的響應時間也不盡相同,
甚至同一功能在不同輸入數據的情況下響應時間也不相同。所以,在討論一個系統的響應時間時,人們通常是指該系統所有功能的平均時間或者所有功能的最大響應時間。當然,往往也需要對每個或每組功能討論其平均響應時間和最大響應時間。
對於單機的沒有併發操作的應用系統而言,人們普遍認為響應時間是一個合理且準確的性能指標。需要指出的是,響應時間的絕對值並不能直接反映軟體的性能的高低,軟體性能的高低實際上取決於用戶對該響應時間的接受程度。對於一個游戲軟體來說,響應時間小於100毫秒應該是不錯的,
響應時間在1秒左右可能屬於勉強可以接受,如果響應時間達到3秒就完全難以接受了。而對於編譯系統來說,完整編譯一個較大規模軟體的源代碼可能需要幾十分鐘甚至更長時間,但這些響應時間對於用戶來說都是可以接受的。
安裝ab測試工具
yum install httpd-tools -y
ab工具幫助
ab是Apache超文本傳輸協議(HTTP)的性能測試工具。其設計意圖是描繪當前所安裝的Apache的執行性能,主要是顯示你安裝的Apache每秒可以處理多少個請求。
命令格式: ./ab [options] [http://]hostname[:port]/path
命令參數:
-A:指定連接伺服器的基本的認證憑據;
-c:指定一次向伺服器發出請求數;
-C:添加cookie;
-g:將測試結果輸出為“gnuolot”文件;
-h:顯示幫助信息;
-H:為請求追加一個額外的頭;
-i:使用“head”請求方式;
-k:激活HTTP中的“keepAlive”特性;
-n:指定測試會話使用的請求數;
-p:指定包含數據的文件;
-q:不顯示進度百分比;
-T:使用POST數據時,設置內容類型頭;
-v:設置詳細模式等級;
-w:以HTML表格方式列印結果;
-x:以表格方式輸出時,設置表格的屬性;
-X:使用指定的代理伺服器發送請求;
-y:以表格方式輸出時,設置表格屬性。
參數很多,一般我們用 -c表示併發數 -n 表示請求數即可
如果只用到一個Cookie,那麼只需鍵入命令:
ab -n 100 -C key=value http://test.com/
如果需要多個Cookie,就直接設Header:
ab -n 100 -H “Cookie: Key1=Value1; Key2=Value2” http://test.com/
使用舉例:
[root@c75 ~]# ab -n 1000 -c 1000 http://192.168.255.209/monitor
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 192.168.255.209 (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests
Server Software: nginx/1.14.0
Server Hostname: 192.168.255.209
Server Port: 80
Document Path: /monitor
Document Length: 185 bytes
Concurrency Level: 1000 //併發請求數
Time taken for tests: 2.252 seconds //整個測試持續的時間
Complete requests: 1000 //完成的請求數
Failed requests: 0 //失敗的請求數
Write errors: 0 //寫入失敗數
Non-2xx responses: 1000 //非2xx狀態請求數
Total transferred: 386000 bytes //傳輸的總位元組數大小
HTML transferred: 185000 bytes //傳輸的總文檔位元組數大小
Requests per second: 444.05 [#/sec] (mean) //每秒處理的請求數
Time per request: 2252.008 [ms] (mean) //每個請求花費的平均時間
Time per request: 2.252 [ms] (mean, across all concurrent requests)
Transfer rate: 167.39 [Kbytes/sec] received //轉移率
Connection Times (ms)
min mean[+/-sd] median max
Connect: 6 40 14.2 36 69 //創建TCP連接到伺服器或者代理伺服器所花費的時間
Processing: 40 738 722.9 302 2138 //寫入緩衝區消耗+鏈路消耗+服務端消耗
Waiting: 11 546 595.8 293 1930 //寫入緩衝區消耗+鏈路消耗+服務端消耗+讀取數據消耗
Total: 45 778 733.0 344 2207 //總花費時間
Percentage of the requests served within a certain time (ms)
50% 344
66% 752
75% 1668
80% 1799
90% 1957
95% 2073
98% 2161
99% 2191
100% 2207 (longest request)