1. 程式人生 > >QPS-QPS每秒查詢率(Query Per Second)-web伺服器壓力測試工具

QPS-QPS每秒查詢率(Query Per Second)-web伺服器壓力測試工具

http_load
是執行在linux作業系統上的命令列測試工具, 用來對網站做壓力測試.

下載地址:http://www.acme.com/software/http_load/http_load-12mar2006.tar.gz

程式非常小,解壓後也不到100K.安裝也很簡單直接make;make instlall 就行。

http_load以並行複用的方式執行,用以測試web伺服器的吞吐量和負載。但是它不同於大多數壓力測試工具,它可以以一個單一的程序執行,一般不會把客戶機搞死。可以測試HTTPS類的網站請求。

命令格式:http_load   -p 併發訪問程序數   -s 訪問時間   需要訪問的URL檔案

http_load能測試出什麼效能指標? 2008/11/06 15:25

測試網站每秒所能承受的平均訪問量(吞吐量, 單位時間內的事物處理能力)

http_load -parallel 5 -fetches 1000 urls.txt
這段命令列是同時使用5個程序,隨機訪問urls.txt中的網址列表,總共訪問1000次。執行之後的結果:

1000 fetches, 5 max parallel, 6e+06 bytes, in 58.1026 seconds
6000 mean bytes/connection
17.2109 fetches/sec, 103266 bytes/sec(吞吐量)
msecs/connect

: 0.403263 mean, 68.603 max, 0.194 min(響應時間)
msecs/first-response: 284.133 mean, 5410.13 max, 55.735 min
HTTP response codes:
code 200 — 1000

從上面的執行結果來看,目標網站僅僅能夠承受每秒17次訪問,不夠強壯。

測試網站是否能承受住預期的訪問壓力(大量使用者併發訪問, 持續一段時間)

http_load -rate 2 -seconds 300 urls.txt
在300秒內保持一定的頻率訪問目標url。

注: 不要測試上線之後的網站,壓垮了可不好玩

http_load學習心得:

測試網站每秒所能承受的平均訪問量(吞吐量)

http_load -parallel 5 -fetches 1000 urls.txt
這段命令列是同時使用5個程序,隨機訪問urls.txt中的網址列表,總共訪問1000次。執行之後的結果:

1000 fetches, 5 max parallel, 6e+06 bytes, in 58.1026 seconds
6000 mean bytes/connection
17.2109 fetches/sec, 103266 bytes/sec
msecs/connect: 0.403263 mean, 68.603 max, 0.194 min
msecs/first-response: 284.133 mean, 5410.13 max, 55.735 min
HTTP response codes:
code 200 — 1000

從上面的執行結果來看,目標網站僅僅能夠承受每秒17次訪問,不夠強壯。

測試網站是否能承受住預期的訪問壓力(

http_load -rate 2 -seconds 300 urls.txt
在300秒內保持一定的頻率訪問目標url。

注:

  • urls.txt儲存要訪問的url列表,每行一個
  • 不要測試上線之後的網站,壓垮了可不好玩

例如:

1.http_load -parallel 5 -fetches 1000 urls.txt

2.http_load -rate 2 -seconds 300 urls.txt

3. http_load -p 30 -s 60   urllist.txt

4. http_load -parallel 50 -s 10 urls.txt
       這段命令列是同時使用50個程序,隨機訪問urls.txt中的網址列表,總共訪問10秒。

引數說明:

-parallel 簡寫-p :含義是併發的使用者程序數。
-fetches 簡寫-f :含義是總計的訪問次數
-rate    簡寫-r :含義是每秒的訪問頻率
-seconds簡寫-s :含義是總計的訪問時間

引數是可以自由組合的,引數之間的選擇並沒有什麼限制。

urls.txt儲存要訪問的url列表,

url 是你要訪問的網址名,引數可以是單個的網址也可以是包含網址的檔案。檔案格式是每行一個URL,URL最好超過50-100個測試效果比較好. 檔案格式如下

http://iceskysl.1sters.com/?action=show&id=336
http://iceskysl.1sters.com/?action=show&id=335
http://iceskysl.1sters.com/?action=show&id=332
http://iceskysl.1sters.com/?action=show&id=32

引數瞭解了,我們來執行一條命令, 來看看它的返回結果

命令:% ./http_load -rate 5 -seconds 10 urls
命令解釋
: 執行一個持續時間為10秒的測試,每秒的訪問頻率為5次。

49 fetches, 2 max parallel, 289884 bytes, in 10.0148 seconds
5916 mean bytes/connection
4.89274 fetches/sec, 28945.5 bytes/sec (重要效能指標吞吐量)
msecs/connect
: 28.8932 mean, 44.243 max, 24.488 min(重要指標響應時間)
msecs/first-response: 63.5362 mean, 81.624 max, 57.803 min
HTTP response codes:
code 200 — 49

結果分析:
1.49 fetches, 2 max parallel, 289884 bytes, in 10.0148 seconds
說明在上面的測試中運行了49個請求,最大的併發程序數是2,總計傳輸的資料是289884bytes,執行的時間是10.0148秒
2.5916 mean bytes/connection
說明每一連線平均傳輸的資料量289884/49=5916
3.4.89274 fetches/sec, 28945.5 bytes/sec (吞吐量: 單位時間完成請求數)
說明每秒的響應請求為4.89274,每秒傳遞的資料為28945.5 bytes/sec
這個值得是根據 49 fetches / 10.0148 seconds 秒計算出來的
4.msecs/connect: 28.8932 mean, 44.243 max, 24.488 min (響應時間: 每次請求需要的時間, 平均, 最大, 最小)
說明每連線的平均響應時間是28.8932 msecs,最大的響應時間44.243 msecs,最小的響應時間24.488 msecs
5.msecs/first-response: 63.5362 mean, 81.624 max, 57.803 min
6、HTTP response codes: code 200 — 49

說明開啟響應頁面的型別,如果403的型別過多,那可能要注意是否系統遇到了瓶頸。
特殊說明:這裡,我們一般會關注到的指標是fetches/sec、msecs/connect
他們分別對應的常用效能指標引數

Qpt-每秒響應使用者數和response time,每連線響應使用者時間。
測試的結果主要也是看這兩個值。當然僅有這兩個指標並不能完成對效能的分析,我們還需要對伺服器的cpu、memory進行分析,才能得出結論

,另外,測試結果中主要的指標是 fetches/sec 這個選項,即伺服器每秒能夠響應的查詢次數,用這個指標來衡量效能。似乎比 apache的ab準確率要高一些,也更有說服力一些。

6月 11th, 2008 Posted in http_load < by Johnny Woo >

./http_load -parallel 200 -seconds 10 urls
按照固定時間來結束測試,這樣可以比較相同時間內被測伺服器的響應速度.
./http_load -parallel 200 -fetches 1000 urls
按照固定申請數來測試,這樣可以比較相同訪問量下返回的響應速度.

雖然兩者都可以獲取到伺服器的響應速度
但是使用fetches更容易讓被測伺服器收到壓力
由於seconds控制測試時間,很有可能在短時間內測試客戶端並沒有發起足夠數量的請求
而服務端在收到足夠壓力之前,測試就已經結束了.
有一些情況,諸如記憶體洩漏以及資源回收不利或者對後面的響應速度越來越慢等情況
在這種測試條件下不容易發生
而使用fetchs,能夠讓客戶端保證確定請求數的全部處理.
使用時間作為控制引數
會由於測試人員不夠耐心而人為將seconds引數設定過小
導致測試結果失去意義

所以,最後建議使用fetches作為測試引數.用以作為基準進行比較

http_load做測試時出現”byte count wrong”的錯誤,
如果httpd_load獲取到的頁面資料和上次不一致
則會報錯byte count wrong
如果是動態頁面,由於返回資料內容不同.則此報錯可以忽略