ab - 参考手册、选项、命令示例


姓名

ab - Apache HTTP 服务器基准测试工具

概要

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

概括

ab 是一个用于对 Apache 超文本传输协议 (HTTP) 服务器进行基准测试的工具。它旨在让您了解当前 Apache 安装的执行情况。这尤其显示了您的 Apache 安装每秒能够处理多少个请求。

选项

-A auth-username:password

向服务器提供基本身份验证凭据。用户名和密码由单个 : 分隔并通过 Base64 编码进行发送。无论服务器是否需要它(即,已发送需要的 401 身份验证),都会发送该字符串。

-b windowsize

TCP 发送/接收缓冲区的大小(以字节为单位)。

-B local-address

建立传出连接时要绑定的地址。

-c concurrency

一次执行的多个请求的数量。默认为一次一个请求。

-C cookie-name=value

在请求中添加 Cookie: 行。参数通常采用名称=值对的形式。该字段是可重复的。

-d

不显示“XX [ms] 表内服务的百分比”。 (遗留支持)。

-e csv-file

编写一个逗号分隔值 (CSV) 文件,其中包含每个百分比(从 1% 到 100%)的服务该百分比请求所花费的时间(以毫秒为单位)。这通常比“gnuplot”文件更有用;因为结果已经被“分类”了。

-E client-certificate-file

连接到 SSL 网站时,使用提供的 PEM 格式的客户端证书向服务器进行身份验证。该文件应包含客户端证书,然后是中间证书,最后是私钥。在 2.4.36 及更高版本中可用。

-f protocol

指定 SSL/TLS 协议(SSL2、SSL3、TLS1、TLS1.1、TLS1.2 或 ALL)。 2.4.4 及更高版本中提供 TLS1.1 和 TLS1.2 支持。

-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 会话中执行多个请求。默认为无 KeepAlive。

-l

如果响应的长度不恒定,则不要报告错误。这对于动态页面很有用。在 2.4.7 及更高版本中可用。

-m HTTP-method

请求的自定义 HTTP 方法。在 2.4.10 及更高版本中可用。

-n requests

为基准测试会话执行的请求数。默认情况下仅执行单个请求,这通常会导致不具有代表性的基准测试结果。

-p POST-file

包含要 POST 的数据的文件。请记住还要设置-T。

-P proxy-auth-username:password

向途中的代理提供基本身份验证凭据。用户名和密码由单个 : 分隔并通过 Base64 编码进行发送。无论代理是否需要它(即,已发送需要的 407 代理身份验证),都会发送该字符串。

-q

当处理超过 150 个请求时,ab 每 10% 或 100 个请求左右就会在 stderr 上输出一个进度计数。 -q 标志将抑制这些消息。

-r

不要因套接字接收错误而退出。

-s timeout

套接字超时之前等待的最大秒数。默认值为 30 秒。在 2.4.4 及更高版本中可用。

-S

不显示中位数和标准差值,当平均值和中位数相差超过标准差的一倍或两倍时,也不显示警告/错误消息。并默认为最小值/平均值/最大值。 (遗留支持)。

-t timelimit

用于基准测试的最大秒数。这意味着内部有一个-n 50000。使用它来在固定的总时间内对服务器进行基准测试。默认情况下没有时间限制。

-T content-type

用于 POST/PUT 数据的内容类型标头,例如。 application/x-www-form-urlencoded。默认为文本/纯文本。

-u PUT-file

包含要 PUT 的数据的文件。请记住还要设置-T。

-v verbosity

设置详细级别 - 4 及以上打印标头信息,3 及以上打印响应代码(404、200 等)、2 及上面打印警告和信息。

-V

显示版本号并退出。

-w

以 HTML 表格形式打印结果。默认表格为两列宽,具有白色背景。

-x <table>-attributes

用作表属性的字符串。属性插入表格此处。

-X proxy[:port]

使用代理服务器来处理请求。

-y <tr>-attributes

用作 属性的字符串。

-z <td>-attributes

用作 属性的字符串。

-Z ciphersuite

指定 SSL/TLS 密码套件(请参阅 openssl 密码)

输出

以下列表描述了 ab 返回的值:

Server Software

第一个成功响应的服务器 HTTP 标头中返回的值(如果有)。这包括标头中从开始到检测到十进制值为 32 的字符(最值得注意的是:空格或 CR/LF)的所有字符。

Server Hostname

命令行上给出的 DNS 或 IP 地址

Server Port

ab 所连接的端口。如果命令行上未指定端口,则 http 的端口号默认为 80,https 的端口号默认为 443。

SSL/TLS Protocol

客户端和服务器之间协商的协议参数。仅当使用 SSL 时才会打印此信息。

Document Path

从命令行字符串解析的请求 URI。

Document Length

这是第一个成功返回的文档的大小(以字节为单位)。如果测试期间文档长度发生变化,则响应被视为错误。

Concurrency Level

测试期间使用的并发客户端数量

Time taken for tests

这是从创建第一个套接字连接到收到最后一个响应所花费的时间

Complete requests

收到的成功回复数

Failed requests

被视为失败的请求数。如果该数字大于零,将打印另一行,显示由于连接、读取、内容长度不正确或异常而失败的请求数。

Write errors

写入期间失败的错误数(损坏的管道)。

Non-2xx responses

不在 200 系列响应代码中的响应数。如果所有响应均为 200,则不会打印此字段。

Keep-Alive requests

导致保持活动请求的连接数

Total body sent

如果配置为作为测试的一部分发送数据,则这是测试期间发送的字节总数。如果测试不包含要发送的正文,则省略此字段。

Total transferred

从服务器接收的总字节数。该数字本质上是通过线路发送的字节数。

HTML transferred

从服务器接收的文档字节总数。该数字不包括 HTTP 标头中收到的字节

Requests per second

这是每秒的请求数。该值是请求数除以所用总时间的结果

Time per request

每个请求花费的平均时间。第一个值的计算公式为concurrency * timetaken * 1000/done,而第二个值的计算公式为timetaken * 1000/done

Transfer rate

通过公式总读取数/1024/所用时间计算的传输率

错误

有各种静态声明的固定长度的缓冲区。结合命令行参数、来自服务器的响应标头和其他外部输入的延迟解析,这可能会让您感到困扰。

它没有完全实现 HTTP/1.x;只接受一些“预期”形式的响应。 strstr(3) 的大量使用显示在配置文件的顶部,这可能表明存在性能问题; 即,您将测量ab性能而不是服务器的性能。