1.apache benchmark简介
1.apache benchmark
简称ab
。
2.ab
是一款用于对你的http
服务器做基准测试并展示服务器性能数据,尤其是RPS(requests per second)
2.安装
Mac系统默认安装了ab,所以我们不需要额外安装,当然,我们也可以使用一下命令检查一下系统是否已经安装了:
xiongzelin@xiongzelindeMacBook-Pro ~ % ab -V
This is ApacheBench, Version 2.3 <$Revision: 1879490 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
以上信息显示,我的ab版本是2.3
3.请求参数解释
-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 个请求时,每 10% 或 100 个左右的请求ab输出一个进度计数。stderr该 -q标志将抑制这些消息。
-r
不要在套接字接收错误时退出。
-s timeout
在套接字超时之前等待的最大秒数。默认值为 30 秒。在 2.4.4 及更高版本中可用。
-S
不显示中位数和标准差值,也不要在平均值和中位数相差超过标准差的一倍或两倍时显示警告/错误消息。并默认为最小/平均/最大值。(旧版支持)。
-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 here >
-X proxy[:port]
为请求使用代理服务器。
-y <tr>-attributes
用作 的属性的字符串<tr>。
-z <td>-attributes
用作 的属性的字符串<td>。
-Z ciphersuite
指定 SSL/TLS 密码套件(请参阅 openssl 密码)
4.输出参数解释
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
导致 Keep-Alive 请求的连接数
Total body sent
如果配置为作为测试的一部分发送数据,则这是测试期间发送的总字节数。如果测试不包含要发送的正文,则省略此字段。
Total transferred
从服务器接收的字节总数。这个数字本质上是通过线路发送的字节数。
HTML transferred
从服务器接收到的文档字节总数。此数字不包括 HTTP 标头中收到的字节数
Requests per second
这是每秒的请求数。该值是请求数除以所用总时间的结果
Time per request
每个请求花费的平均时间。第一个值用公式计算,concurrency * timetaken * 1000 / done 第二个值用公式计算 timetaken * 1000 / done
Transfer rate
由公式计算的传输率 totalread / 1024 / timetaken
5.示例
xiongzelin@xiongzelindeMacBook-Pro ~ % ab -n 20 -c 20 https://www.baidu.com/
This is ApacheBench, Version 2.3 <$Revision: 1879490 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking www.baidu.com (be patient).....done
Server Software: BWS/1.1
Server Hostname: www.baidu.com
Server Port: 443
SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES128-GCM-SHA256,2048,128
Server Temp Key: ECDH P-256 256 bits
TLS Server Name: www.baidu.com
Document Path: /
Document Length: 227 bytes
Concurrency Level: 20
Time taken for tests: 0.224 seconds
Complete requests: 20
Failed requests: 0
Total transferred: 22220 bytes
HTML transferred: 4540 bytes
Requests per second: 89.12 [#/sec] (mean)
Time per request: 224.422 [ms] (mean)
Time per request: 11.221 [ms] (mean, across all concurrent requests)
Transfer rate: 96.69 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 83 97 7.9 92 112
Processing: 13 14 1.0 14 16
Waiting: 13 14 1.0 14 16
Total: 98 112 7.6 108 126
Percentage of the requests served within a certain time (ms)
50% 108
66% 116
75% 117
80% 120
90% 123
95% 126
98% 126
99% 126
100% 126 (longest request)
网友评论