ab-Apache HTTP服務器基準測試工具

http://httpd.apache.org/docs/2.0/programs/ab.html html

ab是用於對Apache超文本傳輸​​協議(HTTP)服務器進行基準測試的工具。它旨在使您對當前的Apache安裝如何執行有一個印象。這尤爲向您顯示Apache安裝每秒可以處理多少個請求。nginx

概要

ab [ -A auth-username:password ] [ -c concurrency ] [ -C cookie-name=value ] [ -d ] [ -e csv-file ] [ -g gnuplot-file ] [ -h ] [ -H custom-header ] [ -i ] [ -k ] [ -n requests ] [ -p POST-file ] [ -P proxy-auth-username:password ] [ -q ] [ -s ] [ -S ] [ -t timelimit ] [ -T content-type ] [ -v verbosity] [ -V ] [ -w ] [ -x <table>-attributes ] [ -X proxy[:port] ] [ -y <tr>-attributes ] [ -z <td>-attributes ] [http://]hostname[:port]/path數據庫

選項

-A auth-username:passwordapache

向服務器提供BASIC身份驗證憑據。用戶名和密碼用單個分隔,:並經過編碼爲base64的網絡發送。不管服務器是否須要該字符串,都將發送該字符串(,已發送所需的401身份驗證)。服務器

-c concurrencycookie

一次執行的多個請求的數量。默認值爲一次一個請求。網絡

-C cookie-name=value併發

Cookie:在請求中添加一行。參數一般爲一 對形式。該字段是可重複的。name=value工具

-d性能

不要顯示「 XX [ms]表中的投放百分比」。(舊版支持)。

-e csv-file

編寫一個逗號分隔值(CSV)文件,其中包含每一個百分比(從1%到100%)的服務該百分比請求所花費的時間(以毫秒爲單位)。一般,它比「 gnuplot」文件有用。由於結果已經「裝箱」了。

-g gnuplot-file

將全部測量值寫爲「 gnuplot」或TSV(製表符單獨值)文件。此文件能夠輕鬆導入到Gnuplot,IDL,Mathematica,Igor甚至Excel等軟件包中。標籤位於文件的第一行。

-h

顯示使用狀況信息。

-H custom-header

將額外的標頭添加到請求。該參數是典型地在一個有效報頭線的形式,含有一個冒號分隔的字段值對("Accept-Encoding: zip/zop;8bit")。

-i

HEAD請求,而不是GET

-k

啓用HTTP KeepAlive功能,在一個HTTP會話中執行多個請求。默認爲no KeepAlive。

-n requests

爲基準測試會話執行的請求數。默認設置是僅執行一個請求,這一般會致使非表明性的基準測試結果。

-p POST-file

包含要發佈的數據的文件。

-P proxy-auth-username:password

在代理途中提供BASIC身份驗證憑據。用戶名和密碼用單個分隔,:並經過編碼爲base64的網絡發送。無論代理是否須要它都將發送該字符串(,已發送了所需的407代理身份驗證)。

-q

當處理150個以上的請求時,每10%或100個左右的請求ab輸出進度計數stderr。該 -q標誌將禁止顯示這些消息。

-s

編譯爲(ab -h將向您顯示)時,請使用SSL保護https而不是http協議。此功能是實驗性的,很是基礎。您可能不想使用它。

-S

當平均值和中位數相距標準誤差的一倍或兩倍以上時,請勿顯示中位數和標準誤差值,也不會顯示警告/錯誤消息。並默認爲最小值/平均值/最大值。(舊版支持)。

-t timelimit

用於基準測試的最大秒數。這意味着 -n 50000內部。使用它在固定的總時間內對服務器進行基準測試。默認狀況下沒有時間限制。

-T content-type

用於POST數據的內容類型標頭。

-v verbosity

設置詳細級別-4上方將在標題上顯示信息,3上方將顯示響應代碼(40四、200等), 2上方將顯示警告和信息。

-V

顯示版本號並退出。

-w

在HTML表格中打印出結果。默認表是兩列寬,帶有白色背景。

-x <table>-attributes

用做的屬性的字符串<table>。插入屬性。<table here >

-X proxy[:port]

使用代理服務器處理請求。

-y <tr>-attributes

用做的屬性的字符串<tr>

-z <td>-attributes

用做的屬性的字符串<td>

 

BUG

有各類固定長度的靜態聲明的緩衝區。與命令行參數的延遲解析,服務器的響應標頭以及其餘外部輸入相結合,這可能會給您帶來麻煩。它沒有徹底實現HTTP / 1.x。僅接受某些「預期」形式的回覆。strstr(3)概要文件頂部的大量使用顯示可能代表性能存在問題;,您將衡量ab性能而不是服務器的性能。

併發壓測示例

發送1000個http get請求到[http://192.168.10.232:8000/blog,併發爲10]:

$ ab -n1000 -c10 http://localhost/
This is ApacheBench, Version 2.3 <$Revision: 1706008 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        nginx/1.10.3
Server Hostname:        localhost
Server Port:            80

Document Path:          /
Document Length:        11321 bytes

Concurrency Level:      10
Time taken for tests:   0.066 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      11566000 bytes
HTML transferred:       11321000 bytes
Requests per second:    15207.74 [#/sec] (mean)
Time per request:       0.658 [ms] (mean)
Time per request:       0.066 [ms] (mean, across all concurrent requests)
Transfer rate:          171770.21 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       0
Processing:     0    0   0.1      0       1
Waiting:        0    0   0.2      0       1
Total:          0    1   0.1      1       1

Percentage of the requests served within a certain time (ms)
  50%      1
  66%      1
  75%      1
  80%      1
  90%      1
  95%      1
  98%      1
  99%      1
 100%      1 (longest request)

注意Time per request: 0.658 [ms] (mean)是平均每批請求的完成時間,這裏時10個請求完成的時間。Time per request: 0.066 [ms] (mean, across all concurrent requests)是平均每一個請求的完成時間。

ApacheBench將只使用一個操做系統線程。不少狀況下ApacheBench自己是瓶頸。當在硬件具備多個處理器核心使用ApacheBench,建議一個cpu核執行一個ab線程,可是如今cpu核數不少的狀況下,好比48核,手工執行48個命令也是個體力活。

總體來講ab由於不能利用到多核、不能進行參數化、不支持http和https之外的協議等緣由,只適合單個組件的粗略測試,好比Apache http。不合適業務級別的測試,如一旦後臺有數據庫等,ab的測試是幾乎沒有意義的。

相關文章
相關標籤/搜索