壓力測試常用指標與測試工具ab

基本使用

ab就是Apache Benchmark的縮寫,顧名思義它是Apache組織開發的一款web壓力測試工具,優點是使用方便,統計功能強大。所以要利用ab,首先要安裝Apache,并且打開Apache

安裝

mac

Mac電腦是默認有Apache的,所以不需要另外安裝,只要直接啟動就好了

apache的使用

啟動:
sudo apachectl start

查看 Apache 版本命令:
httpd -v

關閉命令:
sudo apachectl stop

重啟命令:
sudo apachectl restart

window安裝

進入apache官網 http://httpd.apache.org/ 下載apache即可

apache安裝路徑為C:\apache\Apache24\為例

打開終端,輸入命令

cd  C:\apache\Apache24\bin

即可啟動ab

ubuntu安裝

sudo apt-get install apache2-utils 

centos安裝

yum install httpd-tools

命令介紹

ab一般常用參數就是 -n, -t ,和 -c。

命令 介紹
-n 表示要發送多少次測試請求
-t 表示測試持續多長時間;
-c (concurrency)表示用多少并發來進行測試;
-p 發送post請求的時候所請求的參數的文件
備注 一般-t或者-n選一個用。

模擬Get請求進行測試

ab非常簡單

ab -n 100 -c 10 'http://testurl.com/xxxx?para1=aaa&para2=bbb'

模擬POST請求進行測試

對于模擬POST請求進行測試,則稍微復雜些,需要把將要post的數據(一般是json格式)放在文件里。比如一個post接口需要如下方式訪問

curl -H 'Content-Type:application/json' -X POST -d '{"name":"job","age":20}' http://localhost:8083/query/

解釋:
-H 請求頭為"Content-Type:application/json",就是json格式,
-X 請求方式為POST
-d 請求參數為{"name":"job","age":20}
請求鏈接為http://localhost:8083/query/

那么我們用ab來模擬就是:

ab -n 100 -c 10 -p post_data.txt -T 'application/json' http://localhost:8083/query/

其中post_data.txt這是一個文件,這個文件中放到就是請求參數 {"name":"job","age":20}

# post_data.txt 

{
    "name":"job",
    "age":20
}

統計結果分析

我發送了:

ab -t 100 -c 10 -p post_data.txt -T "application/json" http://192.168.2.60:8000/centre/linkview/mvts/scheduler/event/add_task/

得出如下結果

結果示例圖

補課: 相關的一些概念做一下說明:

吞吐率(Requests per second)
計算公式:總請求數 / 處理完成這些請求數所花費的時間

并發連接數(The number of concurrent connections)
概念:某個時刻服務器所接受的請求數目,簡單的講,就是一個會話。

并發用戶數(The number of concurrent users,Concurrency Level)
一個用戶可能會產生多個并發。

用戶平均請求等待時間(Time per request)
計算公式:處理完成所有請求數所花費的時間/ (總請求數 / 并發用戶數)

服務器平均請求等待時間(Time per request: across all concurrent requests)
計算公式:處理完成所有請求數所花費的時間 / 總請求數


示例結果分析

這是一種時間統計的方法


網絡上消耗的時間的分解

這段是每個請求響應時間的分布情況,50%的處理時間在24ms內,66%的處理時間在27ms內...,重要的是看90%的處理時間

響應時間

重要指標參數說明

//并發請求數
Concurrency Level: 10

//整個測試持續的時間
Time taken for tests: 100.02 seconds

//完成的請求數
Complete requests: 1000

//失敗的請求數
Failed requests: 0

//整個場景中的網絡傳輸量
Total transferred: 13701482 bytes

//整個場景中的HTML內容傳輸量
HTML transferred: 13197000 bytes

//吞吐率,大家最關心的指標之一,相當于 LR 中的每秒事務數,后面括號中的 mean 表示這是一個平均值
Requests per second: 19.66 [#/sec] (mean)

//用戶平均請求等待時間,大家最關心的指標之二,相當于 LR 中的平均事務響應時間,后面括號中的 mean 表示這是一個平均值
Time per request: 5087.180 [ms] (mean)

//服務器平均請求處理時間,大家最關心的指標之三
Time per request: 50.872 [ms] (mean, across all concurrent requests)

//平均每秒網絡上的流量,可以幫助排除是否存在網絡流量過大導致響應時間延長的問題
Transfer rate: 263.02 [Kbytes/sec] received


如果遇到登錄怎么辦?

首先用賬號密碼登錄,找到Cookie,然后在ab命令中添加獲取到的Cookie,如果需要多個用戶登錄,就傳入多個Cookie。命令語句為:一個用戶的情況

ab -n 100 -C key=value http://test.com/

多個用戶的情況

ab -n 100 -H “Cookie: Key1=Value1; Key2=Value2” http://test.com/

參考

ab - Apache HTTP server benchmarking tool

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 寫在前面 在學習ab工具之前,我們需了解幾個關于壓力測試的概念 吞吐率(Requests per second)概...
    橙子醬閱讀 240,891評論 13 190
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,837評論 18 139
  • 當你使用PHP(或其他編程語言)完成一個web程序的開發,并且web程序在Apache服務器上正常運行的時候,你有...
    零一間閱讀 19,678評論 0 14
  • 不知道你會不會看我寫的東西,好久沒上簡書了。我沒騙過你,我也不要你信不信我了,我問心無愧。我很在意你,唉…但是… ...
    Neal丶閱讀 211評論 0 1
  • 中秋的時候回了趟家,一直到現在都沒再回去過,十月中旬我去參加了一場考試,考完試身心疲憊,一直沒有和父母打電...
    87號老白兔閱讀 238評論 0 1