<-
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
向服务器提供基本身份验证凭据。用户名和密码之间用单个冒号 (:) 分隔,并以 base64 编码发送。无论服务器是否需要此字符串(即,是否已发送 401 身份验证所需),都会发送此字符串。
-b windowsize
TCP 发送/接收缓冲区的大小,以字节为单位。
-B local-address
在进行出站连接时要绑定的地址。
-c concurrency
一次执行多个请求的数量。默认情况下,一次执行一个请求。
-C cookie-name=value
在请求中添加 Cookie: 行。参数通常采用 name=value 对的形式。此字段可重复。
-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)。TLS1.1 和 TLS1.2 支持在 2.4.4 及更高版本中可用。
-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 数据的 Content-type 标头,例如 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 here > 中。
-X proxy[:port]
对请求使用代理服务器。
-y <tr>-attributes
用作 <tr> 属性的字符串。
-z <td>-attributes
用作 <td> 属性的字符串。
-Z ciphersuite
指定 SSL/TLS 密码套件(参见 openssl 密码)
top

输出

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

服务器软件
第一个成功响应的 server HTTP 标头中返回的值(如果有)。这包括标头中从开头到检测到值为 32 的字符(最显著的是:空格或 CR/LF)的所有字符。
服务器主机名
命令行中给出的 DNS 或 IP 地址
服务器端口
ab 连接到的端口。如果命令行中没有给出端口,则对于 http,默认值为 80,对于 https,默认值为 443。
SSL/TLS 协议
客户端和服务器之间协商的协议参数。只有在使用 SSL 时才会打印此信息。
文档路径
从命令行字符串解析的请求 URI。
文档长度
这是第一个成功返回的文档的大小(以字节为单位)。如果文档长度在测试期间发生变化,则响应被视为错误。
并发级别
测试期间使用的并发客户端数量
测试所需时间
这是从创建第一个套接字连接到收到最后一个响应所花费的时间
完成的请求
收到的成功响应数量
失败的请求
被视为失败的请求数量。如果此数字大于零,则会打印另一行,显示由于连接、读取、内容长度不正确或异常而导致失败的请求数量。
写入错误
写入期间失败的错误数量(管道破裂)。
非 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 频道 #httpd(在 Libera.chat 上)或发送到我们的 邮件列表