<-
Apache > HTTP 伺服器 > 文件 > 第 2.4 版 > 程式

ab - Apache HTTP 伺服器效能評量工具

可用語言:  en  |  fr  |  ko  |  tr 

ab 是一個評量 Apache 超文字傳輸協定 (HTTP) 伺服器的工具。它用來快速了解目前 Apache 安裝的執行效能。尤其是了解 Apache 安裝每秒能服務的請求數量。

Support Apache!

另請參閱

top

概要

ab [ -A auth-username:password ] [ -b windowsize ] [ -B local-address ] [ -c concurrency ] [ -C cookie-name=value ] [ -d ] [ -e csv-file ] [ -E client-certificate file ] [ -f protocol ] [ -g gnuplot-file ] [ -h ] [ -H custom-header ] [ -i ] [ -k ] [ -l ] [ -m HTTP-method ] [ -n requests ] [ -p POST-file ] [ -P proxy-auth-username:password ] [ -q ] [ -r ] [ -s timeout ] [ -S ] [ -t timelimit ] [ -T content-type ] [ -u PUT-file ] [ -v verbosity] [ -V ] [ -w ] [ -x <table>-attributes ] [ -X proxy[:port] ] [ -y <tr>-attributes ] [ -z <td>-attributes ] [ -Z ciphersuite ] [http[s]://]hostname[:port]/path

top

選項

-A auth-username:password
提供伺服器的 BASIC 認證憑證。使用者名稱與密碼用單一:分隔,並以 base64 編碼的形式通過網路傳送。不論伺服器是否要求(例如:已傳送 401 需要認證),這串字串都會傳輸。
-b windowsize
TCP 傳送/接收緩衝器的大小,以位元組為單位。
-B 本機地址
建立傳送連線時要繫結的地址。
-c 同時處理連線數目
一次執行多少個要求。預設是每次一個要求。
-C Cookie 名稱=
在要求中加入 Cookie: 列。引數通常是 名稱= 配對格式。此欄位可以重複使用。
-d
不要顯示「在 XX [ms] 內處理的百分比表格」。 (舊版支援).
-e csv 檔
寫入一個逗號分隔值 (CSV) 檔,其中包含每個百分比 (從 1% 到 100%) 處理掉該百分比要求所花費的時間 (以毫秒為單位)。這通常比「gnuplot」檔更有用,因為結果已經「分類」過。
-E 用戶端憑證檔案
連接到 SSL 網站時,使用提供的 PEM 格式用戶端憑證向伺服器進行驗證。此檔案應該包含用戶端憑證、中間憑證以及私密金鑰。可以在 2.4.36 及更新版本中使用。
-f 通訊協定
指定 SSL/TLS 通訊協定 (SSL2、SSL3、TLS1、TLS1.1、TLS1.2 或 ALL)。TLS1.1 和 TLS1.2 支援功能可在 2.4.4 及更新版本中使用。
-g gnuplot 檔
將所有測量值寫入「gnuplot」或 TSV (Tab separate values,以標籤分隔值) 檔。這個檔可以輕鬆地導入到 Gnuplot、IDL、Mathematica、Igor 甚至 Excel 等套件中。標籤位於檔案的第一行。
-h
顯示使用說明。
-H 自訂標頭
附加額外的標頭到要求中。引數通常是有效標頭行的格式,包含一個冒號分隔的場值配對 (例如"Accept-Encoding: zip/zop;8bit")。
-i
執行 HEAD 要求而不是 GET 要求。
-k
啟用 HTTP KeepAlive 功能,例如,在一個 HTTP 瀏覽中執行多個要求。預設為不使用 KeepAlive。
-l
如果回應的長度不一致,則不報告錯誤。這對於動態頁面很有用。可以在 2.4.7 及更新版本中使用。
-m HTTP 方法
要求的自訂 HTTP 方法。可以在 2.4.10 及更新版本中使用。
-n 要求次數
在基準測試中執行的要求次數。預設值是只執行一次要求,這通常會導致不具代表性的基準測試結果。
-p POST 檔
包含要 POST 資料的檔。記得也要設定 -T
-P proxy 認證使用者名稱:密碼
提供 BASIC 認證憑據到途中的 proxy。使用者名稱和密碼以單個 : 分隔,並使用 base64 編碼傳送。無論 proxy 是否需要,這個字串都會傳送 (例如,已傳送 407 proxy 認證需求)。
-q
在處理超過 150 個要求時,ab 會在 stderr 中每 10% 或 100 個要求輸出一個進度計數。-q 旗標會抑制這些訊息。
-r
Socket 收到錯誤時,不要結束。
-s timeout
Socket 在逾時之前的等待時間,以秒為單位。預設為 30 秒。在 2.4.4 及更新版本中提供。
-S
不要顯示中位數及標準差數值,或者在平均值及中位數超過標準差一或兩倍時,不要顯示警告/錯誤訊息。預設為 min/avg/max 數值(舊支援)。
-t timelimit
花費在基準測試的秒數上限。對應到內部的 -n 50000。使用此選項在固定的總時間內對伺服器執行基準測試。預設沒有時間限制。
-T content-type
用於 POST/PUT 資料的內容類型標頭,例如:application/x-www-form-urlencoded。預設為 text/plain
-u PUT-file
包含要 PUT 的資料之檔案。記住也要設定 -T
-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> 屬性的字串。
-Z ciphersuite
指定 SSL/TLS 加密套件(請參閱 openssl ciphers)
top

輸出

下列清單說明 ab 返回的值

伺服器軟體
如果有值傳回,則在第一個成功回應的 server HTTP 標頭中傳回。這包含標頭中從頭到發生偵測到十進位值為 32 的字元為止的所有字元(最著名的:空白或 CR/LF)。
伺服器主機名稱
命令列中指定的 DNS 或 IP 位址
伺服器通訊埠
ab 連線的通訊埠。如果命令列中沒有指定通訊埠,則對於 http 的預設值為 80,對於 https 的預設值為 443。
SSL/TLS 協定
在用戶端與伺服器之間協商的協定參數。這只會在使用 SSL 時列印出來。
文件路徑
從命令列字串解析的要求 URI。
文件長度
這是第一個成功傳回的文件的位元組大小。如果文件長度在測試期間變更,則回應會視為發生錯誤。
並行等級
在測試期間使用並行的用戶端數目
用於測試的時間
這是從建立第一個 socket 連線到收到最後一個回應的時間
完整要求
收到的成功回應數目
失敗要求
被視為失敗的要求數目。如果數目大於零,將會列印另一行,顯示因連線、讀取、不正確的內容長度或例外情況而失敗的要求數目。
寫入錯誤
寫入 (中斷管線) 期間失敗的錯誤數目。
非 2xx 回應
非 200 系列回應代碼的回應數目。如果所有回應都是 200,此欄位不會列印。
Keep-Alive 要求
導致 Keep-Alive 要求的連線數目
總共傳送的主體
若設定為在測試過程中傳送資料,這表示在測試過程中傳送的總共位元組數。如果測試不包括要傳送的主體,則略過此欄位。
總共傳輸
從伺服器接收到的總位元組數。此數字本質上是透過線路傳送的位元組數。
傳輸的 HTML
從伺服器接收到的總文件位元組數。此數字不包含在 HTTP 標頭中接收到的位元組
每秒要求
這是每秒的要求數目。此值是將要求數目除以總花費時間的結果
每個要求的時間
每個要求花費的平均時間。第一個值是使用公式 concurrency * timetaken * 1000 / done 計算,而第二個值是使用公式 timetaken * 1000 / done 計算
傳輸率
使用公式 totalread / 1024 / timetaken 計算的傳輸率
top

錯誤

有各種以固定長度靜態宣告的緩衝區。再加上命令列引數、伺服器回應標頭和其它外部輸入的延遲分析,這可能會給你帶來困擾。

並未完全實作 HTTP/1.x;只接受某些「預期的」回應形式。大量使用 strstr(3) 顯示在設定檔的最上方,這可能表示效能有問題;也就是說,你會測量到 ab 的效能,而不是伺服器的效能。

可用語言:  en  |  fr  |  ko  |  tr 

top

註解

請注意
這不是問答區。放置在這裡的評論應該針對改善文件或伺服器的建議,如果已實作或被視為無效/離題,我們的版主可能會將它們移除。有關如何管理 Apache HTTP Server 的問題應導向我們的 IRC 頻道,也就是 Libera.chat 上的 #httpd,或發送到我們的 郵件清單