程序员

mac使用apache benchmark

2022-03-21  本文已影响0人  CXY_XZL

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)
上一篇下一篇

猜你喜欢

热点阅读