Apache自帶的ab壓力測試工具的實現

Apache Bench 簡介

Apache Bench 是 Apache 服務器自帶的一個web壓力測試工具,簡稱 ab 。

ab 非常實用,它不僅可以對apache服務器進行網站訪問壓力測試,也可以對或其它類型的服務器進行壓力測試。比如nginx、tomcat、IIS等

ab的原理

ab的原理:ab命令會創建 多個並發 訪問線程,模擬 多個訪問者 同時對某一 URL地址 進行訪問。

它的測試目標是基於URL的,因此,它既可以用來測試apache的負載壓力,也可以測試nginx、lighthttp、tomcat、IIS等其它Web服務器的壓力。

ab是一個命令行工具, ab命令對發出負載的計算機要求很低,它既不會占用很高CPU,也不會占用很多內存。但卻會給目標服務器造成巨大的負載,其原理類似CC攻擊。自己測試使用也需要註意,否則一次上太多的負載。可能造成目標服務器資源耗完,嚴重時甚至導致死機。

總的來說ab工具小巧簡單,上手學習較快,可以提供需要的基本性能指標,但是沒有圖形化結果,不能監控。

對於想快速進行壓力測試的同學來說,apache ab是一個簡單好用的工具,下面簡單介紹一下它的使用方法。

官網: https://httpd.apache.org/docs/2.0/programs/ab.html

ab的安裝

# 安裝
#yum -y install httpd-tools
apt-get install apache2-utils
# 檢查是否成功
ab -v

參數介紹

格式:ab [options] [http://]hostname[:port]/path

下面是參數

-n requests Number of requests to perform             //本次測試發起的總請求數
-c concurrency Number of multiple requests to make   //一次產生的請求數(或並發數)
-t timelimit Seconds to max. wait for responses    //測試所進行的最大秒數,默認沒有時間限制。
-r Don't exit on socket receive errors.              // 拋出異常繼續執行測試任務 
-p postfile File containing data to POST      //包含瞭需要POST的數據的文件,文件格式如“p1=1&p2=2”.使用方法是 -p 111.txt

-T content-type Content-type header for POSTing
// POST 數據所使用的 Content-type 頭信息,如 -T “application/x-www-form-urlencoded” 。 (配合-p)

-v verbosity How much troubleshooting info to print
//設置顯示信息的詳細程度 – 4或更大值會顯示頭信息, 3或更大值可以顯示響應代碼(404, 200等), 2或更大值可以顯示警告和其他信息。 -V 顯示版本號並退出。

-C attribute Add cookie, eg. -C “c1=1234,c2=2,c3=3” (repeatable)

//-C cookie-name=value 對請求附加一個Cookie:行。 其典型形式是name=value的一個參數對。此參數可以重復,用逗號分割。
提示:可以借助session實現原理傳遞 JSESSIONID參數, 實現保持會話的功能,如-C ” c1=1234,c2=2,c3=3, JSESSIONID=FF056CD16DA9D71CB131C1D56F0319F8″ 。

-w Print out results in HTML tables  //以HTML表的格式輸出結果。默認時,它是白色背景的兩列寬度的一張表。
-i Use HEAD instead of GET

ab測試案例

ab -n 5000 -c 200 http://localhost/index.php
ab -n 1000 -c 100 -w http://localhost/index.php >>d:miss.html
ab -n 1000 -c 100 -p request_json.txt -T 'application/json' 'http://192.168.0.101:8088/api/event/annotationEvent'

示例2

參數很多,一般我們用 -n 和 -c 參數就可以瞭。例如:

abs.exe -n 100  -c 20  測試網址
  • -n 後面的100,表示總共發出100 個請求;
  • -c 後面的20 ,表示采用20 個並發(模擬 20 個人同時訪問),

後面的網址表示測試的目標URL。

對百度進行簡單的壓力測試: abs.exe -n 100 -c 20 https://www.baidu.com/

運行結果:

  • Document Path:測試頁面
  • Document Length: 頁面大小
  • Concurrency Level: 測試的並發數
  • Time taken for tests:整個測試持續的時間
  • Complete requests:完成的請求數量
  • Failed requests: 失敗的請求數量
  • Total transferred: 整個過程中的網絡傳輸量
  • HTML transferred: 整個過程中的HTML內容傳輸量
  • Requests per second: 最重要的指標之一,相當於LR中的每秒事務數,後面括號中的mean表示這是一個平均值
  • Time per request: 最重要的指標之二,相當於LR中的平均事務響應時間,後面括號中的mean表示這是一個平均值
  • Time per request: 每個連接請求實際運行時間的平均值
  • Transfer rate: 平均每秒網絡上的流量,可以幫助排除是否存在網絡流量過大導致響應時間延長的問題

到此這篇關於Apache自帶的ab壓力測試工具的實現的文章就介紹到這瞭,更多相關Apache ab壓力測試工具內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: