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