apache-ab并發負載壓力測試

ab 介紹

  • apache ab(Apache Bench)性能測試工具,這是[apache]免費自帶的性能測試工具,就在apache的bin目錄下,它能模擬多個并發請求,也就是說它主要是用來測試你的apache每秒能處理多少請求的。
Paste_Image.png
  • 格式:ab [options] [http://]hostname[:port]/path

參數介紹

  • -A auth-username:password
    • 對服務器提供BASIC認證信任。 用戶名和密碼由一個:隔開,并以base64編碼形式發送。 無論服務器是否需要(即, 是否發送了401認證需求代碼),此字符串都會被發送。
  • -c concurrency
    • 一次產生的請求個數。默認是一次一個。
  • -C cookie-name=value
  • 對請求附加一個Cookie:行。 其典型形式是name=value的一個參數對。 此參數可以重復。
  • -d
    • 不顯示"percentage served within XX [ms] table"的消息(為以前的版本提供支持)。
  • -e csv-file
    • 產生一個以逗號分隔的(CSV)文件, 其中包含了處理每個相應百分比的請求所需要(從1%到100%)的相應百分比的(以微妙為單位)時間。 由于這種格式已經“二進制化”,所以比'gnuplot'格式更有用。
  • -g gnuplot-file
    • 把所有測試結果寫入一個'gnuplot'或者TSV (以Tab分隔的)文件。 此文件可以方便地導入到Gnuplot, IDL, Mathematica, Igor甚至Excel中。 其中的第一行為標題。
  • -h 顯示使用方法。
  • -H custom-header 對請求附加額外的頭信息。
    • 此參數的典型形式是一個有效的頭信息行,其中包含了以冒號分隔的字段和值的對 (如, "Accept-Encoding: zip/zop;8bit").
  • -i 執行HEAD請求,而不是GET。
  • -k 啟用HTTP KeepAlive功能
    • 在一個HTTP會話中執行多個請求。 默認時,不啟用KeepAlive功能. -n requests 在測試會話中所執行的請求個數。 默認時,僅執行一個請求,但通常其結果不具有代表意義。
  • -p POST-file包含了需要POST的數據的文件.
  • -P proxy-auth-username:password
    • 對一個中轉代理提供BASIC認證信任。 用戶名和密碼由一個:隔開,并以base64編碼形式發送。 無論服務器是否需要(即, 是否發送了401認證需求代碼),此字符串都會被發送。
  • -q
    • 如果處理的請求數大于150, ab每處理大約10%或者100個請求時,會在stderr輸出一個進度計數。 此-q標記可以抑制這些信息。
  • -s
    • 用于編譯中(ab -h會顯示相關信息)使用了SSL的受保護的https, 而不是http協議的時候。此功能是實驗性的,也是很簡陋的。最好不要用。
  • -S 不顯示中值和標準背離值
    • 而且在均值和中值為標準背離值的1到2倍時,也不顯示警告或出錯信息。 默認時,會顯示 最小值/均值/最大值等數值。(為以前的版本提供支持).
  • -t timelimit 測試所進行的最大秒數。
    • 其內部隱含值是-n 50000。 它可以使對服務器的測試限制在一個固定的總時間以內。默認時,沒有時間限制。
  • -T content-type POST數據所使用的Content-type頭信息。
  • -v verbosity 設置顯示信息的詳細程度
    • 4或更大值會顯示頭信息, 3或更大值可以顯示響應代碼(404, 200等), 2或更大值可以顯示警告和其他信息。
  • -V 顯示版本號并退出。
  • -w 以HTML表的格式輸出結果。默認時,它是白色背景的兩列寬度的一張表。
  • -x <table>-attributes 設置<table>屬性的字符串。 此屬性被填入<table 這里 >.
  • -X proxy[:port] 對請求使用代理服務器。
  • -y <tr>-attributes 設置<tr>屬性的字符串.
  • -z <td>-attributes 設置<td>屬性的字符串
  • 這么多參數,其實你大可不必擔心,最基本的關心兩個選項 -c -n

實例

  • ab -n 3000 -c 3000 http://www.test.com/
    • c 100 即:每次并發3000 個
    • n 10000 即: 共發送3000 個請求
  • ab -t 60 -c 100 http://192.168.0.10/
    • 在60秒內發請求,一次100個請求。

帶參數的的請求

  • ab -t 60 -c 100 -T "application/x-www-form-urlencoded" p p.txt http://192.168.0.10/hello.html

    • p.txt 是和ab.exe在一個目錄 p.txt 中可以寫參數,如 p=wdp&fq=78 要注意編碼問題
  • 參數中的三種形式

    • application/x-www-form-urlencoded (默認值)
      • 就是設置表單傳輸的編碼,典型的post請求
    • multipart/form-data.
      • 用來指定傳輸數據的特殊類型的,主要就是我們上傳的非文本的內容,比如圖片,mp3,文件等等
    • text/plain . 是純文本傳輸的意思

結果分析

Paste_Image.png
Paste_Image.png
  • 結果參數解釋:
This is ApacheBench, Version 2.3
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 192.168.80.157 (be patient)
Completed 400 requests
Completed 800 requests
Completed 1200 requests
Completed 1600 requests
Completed 2000 requests
Completed 2400 requests
Completed 2800 requests
Completed 3200 requests
Completed 3600 requests
Completed 4000 requests
Finished 4000 requests

Server Software: Apache/2.2.15
Server Hostname: 192.168.80.157
Server Port: 80

Document Path: /phpinfo.php
#測試的頁面
Document Length: 50797 bytes
#頁面大小

Concurrency Level: 1000
#測試的并發數
Time taken for tests: 11.846 seconds
#整個測試持續的時間
Complete requests: 4000
#完成的請求數量
Failed requests: 0
#失敗的請求數量
Write errors: 0
Total transferred: 204586997 bytes
#整個過程中的網絡傳輸量
HTML transferred: 203479961 bytes
#整個過程中的HTML內容傳輸量
Requests per second: 337.67 [#/sec] (mean)
#最重要的指標之一,相當于LR中的每秒事務數,后面括號中的mean表示這是一個平均值
Time per request: 2961.449 [ms] (mean)
#最重要的指標之二,相當于LR中的平均事務響應時間,后面括號中的mean表示這是一個平均值
Time per request: 2.961 [ms] (mean, across all concurrent requests)
#每個連接請求實際運行時間的平均值
Transfer rate: 16866.07 [Kbytes/sec] received
#平均每秒網絡上的流量,可以幫助排除是否存在網絡流量過大導致響應時間延長的問題
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 483 1773.5 11 9052
Processing: 2 556 1459.1 255 11763
Waiting: 1 515 1459.8 220 11756
Total: 139 1039 2296.6 275 11843
#網絡上消耗的時間的分解,各項數據的具體算法還不是很清楚

Percentage of the requests served within a certain time (ms)
50% 275
66% 298
75% 328
80% 373
90% 3260
95% 9075
98% 9267
99% 11713
100% 11843 (longest request)
#整個場景中所有請求的響應情況。在場景中每個請求都有一個響應時間,其中50%的用戶響應時間小于275毫秒,66%的用戶響應時間小于298毫秒,最大的響應時間小于11843毫秒。對于并發請求,cpu實際上并不是同時處理的,而是按照每個請求獲得的時間片逐個輪轉處理的,所以基本上第一個Time per request時間約等于第二個Time per request時間乘以并發請求數。

ab使用的一些問題

  • ab命令在一般系統上面做測試時候,一般并發不能超過1024個,其實是因為因為系統限制每個進程打開的最大文件數為1024,可以用ulimit -a來查看
  • -n 可以指定最大請求數,但是不能超過50000個
  • -v n 當n>=2 時,可以顯示發送的http請求頭,和響應的http頭及內容,壓力測試時不要這么做
  • 在做壓力測試的時候,一般情況下壓力測試客戶端接收到的數據量一定會遠大于發送出去的數據量
  • 針對一般并發不能超過1024個問題解決方案
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,237評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,957評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,248評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,356評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,081評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,485評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,534評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,720評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,263評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,025評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,204評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,787評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,461評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,874評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,105評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,945評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,205評論 2 375

推薦閱讀更多精彩內容

  • ab命令原理Apache的ab命令模擬多線程并發請求,測試服務器負載壓力,也可以測試nginx、lighthttp...
    宇文臭臭閱讀 1,575評論 0 3
  • 由于現在網站都需要能夠承受高并發要求的能力,所以當我們寫完代碼后,如果需要上線,最好都經過壓力測試后,這樣比較好 ...
    哥本哈登_sketch閱讀 875評論 0 1
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,806評論 18 139
  • 相信大家也聽說過或者有玩這個遊戲,這個遊戲真的很好玩。每一個英雄各有特色各有不同的技能。我來介紹一下吧 雖然我不是...
    無聊的人生閱讀 381評論 0 0
  • 微風輕輕,涼意正濃,真正的秋天到了。為什么就這么的盼望秋天?因為喜歡秋天,一直以來都非常的喜歡,秋是詩的季節。美麗...
    流浪癡人閱讀 272評論 1 1