天天看點

怎麼做伺服器壓力測試?

項目做好了,能不能順利上線?

一般來說我們需要做一下壓力測試來判斷。比如該項目上線後預計每天一百萬的接口通路量,并且通路時段主要集中在早八點到晚八點,那麼平均下來 RPS 大約是 22 次左右,不過使用者的通路量通常不會很平均,假設峰值流量是平均流量的 3 到 5 倍的話,那麼我們可以推斷出項目要想順利上線,RPS 至少應該達到 66+ 次,110+ 次更好。

由此可見上線前用壓力測試工具測試 RPS 是一個很重要的環節。

下面小編給大家介紹幾款Web伺服器性能壓力測試工具。

一、先說花錢的

沒有錢解決不了的事,如果有,那一定是錢不夠。

阿裡雲推出了一款測壓服務:

阿裡雲性能測試PTS

阿裡雲的性能測試PTS無需安裝軟體;腳本場景監控簡單化,省時、省力;分布式并發壓測,施壓能力無上限;快速大規模叢集擴容、支援幾十萬使用者及百萬級TPS性能壓測;可模拟海量使用者的真實業務場景,全方位驗證業務站點的性能、容量和穩定性。

PTS 廣泛應用于各種壓力測試和性能測試場景,包括但不限于以下場景:

怎麼做伺服器壓力測試?
詳細參考《 如何在一分鐘内發起壓測?

二、再說不花錢的

1、http_load

程式非常小,解壓後也不到100K

http_load以并行複用的方式運作,用以測試web伺服器的吞吐量與負載。

但是它不同于大多數壓力測試工具,它可以以一個單一的程序運作,一般不會把客戶機搞死。

還可以測試HTTPS類的網站請求。

下載下傳位址:

http_load-12mar2006.tar.gz

安裝很簡單

#tar zxvf http_load-12mar2006.tar.gz
#cd http_load-12mar2006
#make && make install           

基本用法:

http_load  -p 并發通路程序數  -s 通路時間  需要通路的URL檔案           

參數其實可以自由組合,參數之間的選擇并沒有什麼限制。

比如你寫成http_load  -parallel  5  -seconds  300  urllist.txt也是可以的。

我們把參數給大家簡單說明一下。

-parallel   簡寫-p :含義是并發的使用者程序數。

-fetches   簡寫-f :含義是總計的通路次數

-rate        簡寫-p :含義是每秒的通路頻率

-seconds 簡寫-s :含義是總計的通路時間

準備URL檔案:urllist.txt,檔案格式是每行一個URL,URL最好超過50-100個測試效果比較好。

檔案格式如下:

https://iil.ink/m6c5a
https://iil.ink/qiyeji2zhe
https://iil.ink/rds85zhe
https://iil.ink/txljsl
https://iil.ink/gamedun
https://iil.ink/duanxinsms
https://iil.ink/alicdn           

例如:

http_load -p 30 -s 60 urllist.txt

參數了解了,我們來看運作一條指令來看看它的傳回結果如下:

結果分析:

  1. 294 fetches, 30 max parallel, 3.83835e+06 bytes, in 60.0026 seconds

    說明在上面的測試中運作了294個請求,最大的并發程序數是30,總計傳輸的資料是3.83835e+06bytes,運作的時間是60.0026秒

  2. 13055.6 mean bytes/connection

    說明每一連接配接平均傳輸的資料量3.83835e+06/294=13055.6

  3. 4.89979 fetches/sec, 63969.7 bytes/sec

    說明每秒的響應請求為4.89979,每秒傳遞的資料為63969.7 bytes/sec

  4. msecs/connect: 312.009 mean, 1319.57 max, 209.994 min

    說明每連接配接的平均響應時間是312.009 msecs,最大的響應時間1319.57 msecs,最小的響應時間209.994 msecs

  5. msecs/first-response: 1191.01 mean, 10212.4 max, 220.78 min
  6. HTTP response codes: 
  7. 200  –  127 

code 502  –  166

說明打開響應頁面的類型。

如果403的類型過多,那可能要注意是否系統遇到了瓶頸。

特殊說明:

測試結果中主要的名額是 fetches/sec、msecs/connect 這個選項,即伺服器每秒能夠響應的查詢次數。

用這個名額來衡量性能。似乎比 apache的ab準确率要高一些,也更有說服力一些。

Qpt-每秒響應使用者數和response time,每連接配接響應使用者時間。

測試的結果主要也是看這兩個值。

當然僅有這兩個名額并不能完成對性能的分析,我們還需要對伺服器的cpu、men進行分析,才能得出結論。

2、webbench

webbench是Linux下的一個網站壓力測試工具,最多可以模拟3萬個并發連接配接去測試網站的負載能力。

下載下傳位址可以到google搜,我這裡給出一個

webbench-1.5.tar.gz

這個程式更小,解壓後不到50K,呵呵

安裝非常簡單

#tar zxvf webbench-1.5.tar.gz
#cd webbench-1.5
#make && make install           

會在目前目錄生成webbench可執行檔案,直接可以使用了

用法:webbench -c 并發數 -t 運作測試時間 URL

#webbench -c 1000 -t 130 https://iil.ink/m6c5a           

3、apache bench(主要是用來測試apache的)

ab是apache自帶的一款功能強大的測試工具。

安裝了apache一般就自帶了。

用法可以檢視它的說明

#./ab
           

參數衆多,一般我們用到的是-n 和-c

#webbench -c 1000 -t 130 https://iil.ink/m6c5a           

這個表示同時處理1000個請求并運作130次

https://iil.ink/m6c5a

路徑。

4、Siege

一款開源的壓力測試工具,可以根據配置對一個WEB站點進行多使用者的并發通路,記錄每個使用者所有請求過程的相應時間,并在一定數量的并發通路下重複進行。

Siege官方:

http://www.joedog.org/

Siege下載下傳:

siege-latest.tar.gz

Siege解壓并安裝:

# tar -zxvf siege-latest.tar.gz
# cd siege-latest/
#./configure
#make
#make install           

Siege使用:

#siege -c 100 -r 10 -f site.url           

-c是并發量,-r是重複次數。 

url檔案就是一個文本,每行都是一個url,它會從裡面随機通路的。

site.url内容:

https://iil.ink/m6c5a
https://iil.ink/qiyeji2zhe
https://iil.ink/rds85zhe
https://iil.ink/txljsl
https://iil.ink/gamedun           

結果說明:

Transactions: 550 hits //完成550次處理
Availability: 55.00 % //55.00 % 成功率
Elapsed time: 31.32 secs //總共用時
Data transferred: 1.15 MB //共資料傳輸1.15 MB
Response time: 3.04 secs //顯示網絡連接配接的速度
Transaction rate: 17.56 trans/sec //均每秒完成 17.56 次處理:表示伺服器後
Throughput: 0.04 MB/sec //平均每秒傳送資料
Concurrency: 53.44 //實際最高并發數
Successful transactions: 433 //成功處理次數
Failed transactions: 450 //失敗處理次數
Longest transaction: 15.50 //每次傳輸所花最長時間
Shortest transaction: 0.42 //每次傳輸所花最短時間           

總結:

相對于花錢的,不花錢的限制肯定多一些,而且還要費時費力的配置。對于有大流量企業來講,錢已經不是事兒了,是以能用錢解決的問題盡量别耽誤時間。這裡隻講一下幾種工具,友善大家測試。

原文:

怎麼做伺服器壓力測試?

繼續閱讀