ab 是一个测试 Apache 超文本传输协议 (HTTP) 服务器的工具。它旨在让您了解当前 Apache 安装的执行情况。这特别向您展示了您的 Apache 安装每秒能够提供多少请求。

官方原文档地址:http://httpd.apache.org/docs/2.4/programs/ab.html

Synopsis 简介

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

Option 命令参数

-A 采用base64编码向服务器提供身份验证信息,用法: -A 用户名:密码
-C cookie信息,用法: -C key=value
-d 不显示pecentiles served table
-e 保存基准测试结果为csv格式的文件
-g 保存基准测试结果为gunplot或TSV格式的文件
-h 显示ab可选参数列表
-H 采用字段值的方式发送头信息和请求
-i 发送HEAD请求,默认发送GET请求
-k 设置ab命令允许1个http会话响应多个请求
-p 通过POST发送数据,用法: -p page=1&key=value
-P 采用base64编码向服务器提供身份验证信息,用法: -A 用户名:密码
-q 执行多余100个请求时隐藏掉进度输出
-s 使用Https协议发送请求,默认使用Http
-S 隐藏中位数和标准偏差值
-v -v 2 及以上将打印警告和信息,-v 3 打印http响应码,-v 4 打印头信息
-V 显示ab工具的版本号
-w 采用HTML表格打印结果
-x HTML标签属性,使用 -w 参数时,将放置在<table>标签中
-X 设置代理服务器,用法 -X 192.168.1.1:80
-y HTML标签属性,使用 -w 参数时,将放置在<tr>标签中
-z HTML标签属性,使用 -w 参数时,将放置在<td>标签中

Output

下列描述了 ab 返回的参数信息:

  • Server Software
    第一个成功响应的服务器 HTTP 头中返回的值(如果有)。这包括头中从开始到点的所有字符,检测到十进制值为32的字符(最明显的是:空格或CR/LF)。
  • Server Hostnam
    命令行上给定的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
    不在200系列响应代码中的响应数。如果所有回答都是200,则不打印此字段。
  • 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 计算的传输速率。

Bugs

有各种静态声明的固定长度缓冲区。再加上对命令行参数、服务器的响应头和其他外部输入的延迟解析,这可能会让您很头疼。
它不完全实现HTTP/1.x;只接受某些“预期”形式的响应。 strstr(3) 的大量使用显示在概要文件的顶部,这可能表明存在性能问题;也就是说,您将测量 ab 性能而不是服务器性能。

Examples 案例

微信图片_20190819164122.png

主要命令

# ./ab -n 5000 -c 500 https://moting.online/
# 输出内容
This is ApacheBench, Version 2.3 <$Revision: 1826891 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking moting.online (be patient)
Completed 500 requests
Completed 1000 requests
Completed 1500 requests
Completed 2000 requests
Completed 2500 requests
Completed 3000 requests
Completed 3500 requests
Completed 4000 requests
Completed 4500 requests
Completed 5000 requests
Finished 5000 requests


Server Software:        nginx
Server Hostname:        moting.online
Server Port:            443
SSL/TLS Protocol:       TLSv1.2,ECDHE-RSA-AES128-GCM-SHA256,2048,128
TLS Server Name:        moting.online

Document Path:          /
Document Length:        14701 bytes

Concurrency Level:      500
Time taken for tests:   172.837 seconds
Complete requests:      5000
Failed requests:        0
Total transferred:      74740000 bytes
HTML transferred:       73505000 bytes
Requests per second:    28.93 [#/sec] (mean)
Time per request:       17283.654 [ms] (mean)
Time per request:       34.567 [ms] (mean, across all concurrent requests)
Transfer rate:          422.30 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        3  100 270.5      7     959
Processing:   100 16405 2909.4  17263   17703
Waiting:       35 16405 2909.5  17263   17701
Total:        105 16505 2694.1  17279   18659

Percentage of the requests served within a certain time (ms)
  50%  17279
  66%  17329
  75%  17350
  80%  17363
  90%  17395
  95%  17425
  98%  17464
  99%  17516
 100%  18659 (longest request)

标签: 工具