如何使用Apache Bench对Web服务器进行基准测试

ApacheBench是一种用于测量web服务器性能的工具。尽管名称中有“Apache”,但它实际上可以用于测试任何类型的web服务器。在本教程中,我们将介绍使用ApacheBench的步骤以及如何解释其关于web服务器性能的报告。
ApacheBench通过向web服务器发送不同数量的HTTP请求并记录响应时间来工作。它可以告诉您服务器在被淹没和性能下降之前能够处理多少拥塞。

如何使用Apache Bench

通过ab命令来使用apache bench。
最基本的语法是:

$ab hostname/

注意,ab要求主机名/IP地址后面有反斜杠。

Apache Bench有很多选择,但其中一些最有用的是:

  • -N(数字):用于指定请求的数量AB应该发送给Apache
  • -t(超时):用于指定(以秒为单位)应该如何继续发送请求
  • -C(并发):用于指定AB的同时请求的数量

您可以使用这些选项来模拟更真实的web服务器流量,并观察它在各种压力下的性能。

$ab -t 10 -n 10000 -c 100 hostname/

这个命令将对我们的web服务器进行10秒的基准测试,最多发送10000个请求,同时发送100个请求。

Apache Bench测试结果

当Apache Bench完成运行测试时,它会将结果输出到终端,看起来像这样:

Finished 882 requests
Server Software:        Apache/2.4.29
Server Hostname:        --
Server Port:            80
Document Path:          /
Document Length:        4878 bytes
Concurrency Level:      100
Time taken for tests:   10.008 seconds
Complete requests:      882
Failed requests:        0
Total transferred:      4480560 bytes
HTML transferred:       4302396 bytes
Requests per second:    88.13 [#/sec] (mean)
Time per request:       1134.700 [ms] (mean)
Time per request:       11.347 [ms] (mean, across all concurrent requests)
Transfer rate:          437.20 [Kbytes/sec] received
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       77  327 1008.3     89    7240
Processing:    87  115  43.4    101     807
Waiting:       86  112  39.1    100     604
Total:        168  442 1009.1    192    7373
Percentage of the requests served within a certain time (ms)
  50%    192
  66%    202
  75%    224
  80%    268
  90%    428
  95%   1207
  98%   3208
  99%   7345
 100%   7373 (longest request)

解释Apache Bench结果

前几行仅提供有关Web服务器的一般信息。
有用的信息真的从“测试”行所花费的时间。

测试所花费的时间报告AB命令完成测试的时间有多长。
由于我们在我们的ab命令中指定了-n 10,这条线显然将报告测试需要10秒钟。
如果我们没有指定超时,这条行将告诉我们完成发送指定的请求数量时间。
将优化应用于Web服务器后,我们应该看到测试完成时间的减少(当未指定超时时)。

完整请求报告已成功发送并返回的许多请求。

失败请求报告了有多少请求无法完成。
你显然你会看到一个非常少数,理想情况为零。
如果此行确实报告了一些失败的请求,则可能指示Web服务器被淹没并无法回答所有请求。

总传输和HTML传输的行报告了向Web服务器发送了多少数据,以字节为单位。

每秒请求是Web服务器能够在秒中处理多少请求的平均值。
当许多用户在同时登录时,确定Web服务器将如何执行Web服务器的执行是有用的。

每个请求的时间是一个平均的时间,处理请求。
值以毫秒为单位,因此在我们的示例输出中,时间为1.1秒。
每个请求的第二个“时间”值只是乘以并发值。

转移率是传输数据的快速,这不应该在本地网络上造成任何类型的瓶颈。
如果通过Internet测试,则路由和带宽限制可能会在Apache本身之前长度影响此值。

连接时间(MS)部分列出了HTTP请求的不同阶段的响应时间。

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       77  327 1008.3     89    7240
Processing:    87  115  43.4    101     807
Waiting:       86  112  39.1    100     604
Total:        168  442 1009.1    192    7373

Connect表示AB与Web服务器建立连接需要多大时间。

处理是Apache花费处理请求的时间量。
由于AB无法实际测量此,它只是记录在发起后连接的时间量。

等待是在发送请求和从Web服务器接收响应之间等待的时间。

总计表示从启动到服务器的连接,接收响应的总时间,并且最终关闭连接。

Apache Bench的最后一个公制通过将连接时间分类为百分位,提供更精确的Web服务器的平均响应时间。

Percentage of the requests served within a certain time (ms)
  50%    192
  66%    202
  75%    224
  80%    268
  90%    428
  95%   1207
  98%   3208
  99%   7345
 100%   7373 (longest request)

在上面的示例输出中,50%的HTTP请求被处理并仅在192毫秒或者更小。
此报告还表明,响应为7秒(仅有两个)是异常值,使“连接时报”报告更少警告。
我们的90%的HTTP请求在不到一秒钟内处理。

如何安装Apache Bench

Apache Bench是Apache2-Utils包的一部分,可以使用系统包管理器安装。

对于Ubuntu和其他基于Debian的系统,请使用apt-get命令安装它:

$sudo apt-get install apache2-utils

对于CentOS/Rhel执行:

# dnf install httpd-tools
日期:2020-07-07 20:57:14 来源:oir作者:oir