很多的web應用在搭建伺服器完成後,為了讓搭建的服務能夠滿足使用者的訪問需求,通常需要測試自己應用的併發連線能力。需要使用一些壓測工具,本文介紹一些免費的開源的壓測工具,可以用於簡單的壓力測試(實驗均在linux系統下)。
1.ab工具
ab的全稱是apache bench,是apache自帶的網路壓力測試工具,ab命令對發出負載的計算機要求很低,不會占用很高cpu和記憶體,但也能給目標伺服器產生巨大的負載,能實現基礎的壓力測試。在進行壓力測試時,最好與伺服器使用交換機直連,以獲取最大的網路吞吐量。(雲伺服器可以選擇內網相連)
ab的安裝很簡單,安裝apache會自動安裝,如果要單獨安裝ab,可以使用yum安裝:
基本概念:
• 吞吐率(requests per second)
概念:伺服器併發處理能力的量化描述,單位是reqs/s,指的是某個併發使用者數下單位時間內處理的請求數。某個併發使用者數下單位時間內能處理的最大請求數,稱之為最大吞吐率。
計算公式:總請求數 / 處理完成這些請求數所花費的時間,即
request per second = complete requests / time taken for tests
• 併發連線數(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
可以看到,它是吞吐率的倒數。
ab命令選項 可以使用 ab -–help檢視全部的命令引數
ab命令最基本的引數是-n和-c:
-n 執行的請求數量
-c 併發請求個數
其他引數:
-t 測試所進行的最大秒數
-p 包含了需要post的資料的檔案
-t post資料所使用的content-type頭資訊
-k 啟用http keepalive功能,即在乙個http會話中執行多個請求,預設時,不啟用keepalive功能
ab –n 100 –c 10 測試的自己的**(100請求,10併發)
網路上消耗的時間的分解:
connection times (ms)
min mean[+/-sd] median max
connect: 2 43 197.3 2 1008
processing: 11 1174 1506.4 858 13033
waiting: 10 551 1381.4 220 13026
total: 12 1218 1489.6 1017 13039
每個請求處理時間的分布情況:
50%的處理時間在1017ms內,66%的處理時間在1441ms內...,重要的是看90%的處理時間。
percentage of the requests served within a certain time (ms)
50% 1017
66% 1441
75% 1655
80% 1862
90% 2476
95% 3167
98% 3562
99% 13039
100% 13039 (longest request)
在實際測試的時候可以酌情增加連線數和使用者數,以得到最接近準確的併發數值。
webbench
webbench是知名的**壓力測試工具,能測試處在相同硬體上,不同服務的效能以及不同硬體上同乙個服務的執行狀況。
webbench的標準測試可以向我們展示伺服器的兩項內容:每秒鐘相應請求數和每秒鐘傳輸資料量。
webbench最多可以模擬3萬個併發連線去測試**的負載能力
wget
tar -zvxf webbench-1.5.tar.gz
編譯安裝
檢視命令引數提示
測試webbench -c 50 -t 10
模擬五十個使用者訪問自己的**10秒,請求的url 後端如果報錯,就加乙個「/」。
http_load是一款基於linux平台的web伺服器效能測試工具,用於測試web伺服器的吞吐量與負載,web頁面的效能。
檢視幫助
使用建立urls檔案,檔案裡面寫要測試的url
vim urls
使用示例
-parallel 簡寫-p :含義是併發的使用者程序數。
-fetches 簡寫-f :含義是總計的訪問次數
-rate 簡寫-p :含義是每秒的訪問頻率
-seconds簡寫-s :含義是總計的訪問時間
執行結果:
說明執行了乙個持續時間10秒的測試,每秒的頻率為5。
結果分析:
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
4.msecs/connect: 28.8932 mean, 44.243 max, 24.488 min
說明每連線的平均響應時間是28.8932 msecs,最大的響應時間44.243 msecs,最小的響應時間24.488 msecs
說明開啟響應頁面的型別,如果403的型別過多,那可能要注意是否系統遇到了瓶頸。
特殊說明:這裡,我們一般會關注到的指標是fetches/sec、msecs/connect
他們分別對應的常用效能指標引數
qpt-每秒響應使用者數和response time,每連線響應使用者時間。
測試的結果主要也是看這兩個值。當然僅有這兩個指標並不能完成對效能的分析,我們還需要對伺服器的cpu、men進行分析,才能得出結論
以上介紹了三種開源免費的壓測工具,使用都比較簡單,類似的工具還有很多,如siege等,不再一一累述。
如果需要專業的模擬多使用者的併發訪問的壓力測試,可以使用付費產品,如阿里雲pts壓力測試。
web壓測工具http load
1.什麼是http load http load是一款基於linux平台的web伺服器效能測試工具,用於測試web伺服器的吞吐量與負載,web頁面的效能。進入目錄 執行make make install命令 檢視安裝結果,輸入http load不報錯即成功 3.http load的使用 1 建立檔案...
壓測工具(二)
安裝yum y install httpd tools基本用法使用方法 ab 可選的引數選項 需要進行壓測的url n 在測試會話中所執行的請求個數。預設時,僅執行乙個請求 c 一次產生的請求個數 t 測試所進行的最大秒數。其最大隱含值時 n 50000,它可以使對伺服器的測試限制在乙個固定的總時間...
ab壓測工具
root localhost yum install y httpd tools 安裝ab工具 root localhost ab c 10 n 1000 指定併發請求數為10,總請求數為1000,對進行壓力測試 this is apachebench,version 2.3 revision 14...