項目做好了,能不能順利上線?
一般來說我們需要做一下壓力測試來判斷。比如該項目上線後預計每天一百萬的接口訪問量,並且訪問時段主要集中在早八點到晚八點,那麼平均下來 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
參數瞭解了,我們來看運行一條命令來看看它的返回結果如下:
結果分析:
- 294 fetches, 30 max parallel, 3.83835e+06 bytes, in 60.0026 seconds
說明在上面的測試中運行了294個請求,最大的併發進程數是30,總計傳輸的數據是3.83835e+06bytes,運行的時間是60.0026秒 - 13055.6 mean bytes/connection
說明每一連接平均傳輸的數據量3.83835e+06/294=13055.6 - 4.89979 fetches/sec, 63969.7 bytes/sec
說明每秒的響應請求爲4.89979,每秒傳遞的數據爲63969.7 bytes/sec - msecs/connect: 312.009 mean, 1319.57 max, 209.994 min
說明每連接的平均響應時間是312.009 msecs,最大的響應時間1319.57 msecs,最小的響應時間209.994 msecs - msecs/first-response: 1191.01 mean, 10212.4 max, 220.78 min
- HTTP response codes:
- 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 //每次傳輸所花最短時間
總結:
相對於花錢的,不花錢的限制肯定多一些,而且還要費時費力的配置。對於有大流量企業來講,錢已經不是事兒了,所以能用錢解決的問題儘量別耽誤時間。這裏只講一下幾種工具,方便大家測試。
原文:怎麼做服務器壓力測試?