你的工具包中不能少了这个神奇——Apache HTTP server benchmarking tool(ab)

1,094 阅读4分钟

「这是我参与11月更文挑战的第23天,活动详情查看:2021最后一次更文挑战

简介

ab是一个Apache Http服务器基准测试工具。它可以测试HTTP服务器每秒最多可以处理多少请求。如果测试的是web应用服务,这个结果可以转换成整个应用每秒可以满足多少请求。

缺点

这是一个非常简单的工具,用途比较有限,只能针对单个URL进行尽可能快的压力测试。

Windows下如何下载安装(Linux安装十分简单)

Apache HTTP server benchmarking tool(ab)下载地址

资源 2.4版本

📎httpd-2.4.48-o111k-x64-vc15.zip

解压移动至C盘

管理员身份运行CMD,进入bin目录,执行httpd -k install,将Apache安装为一个服务。

启动报错 443端口被占用(每个人遇到的问题可能不一样,耐心解决网上都有解决问题的办法呀!)

什么是443端口

443端口即网页浏览端口,主要是用于HTTPS服务,是提供加密和通过安全端口传输的另一种HTTP。在一些对安全性要求较高的网站,比如银行、证券、购物等,都采用HTTPS服务,这样在这些网站上的交换信息,其他人抓包获取到的是加密数据,保证了交易的安全性。网页的地址以https://开始,而不是常见的http://。


解决办法分别修改 conf\extra目录下的两个配置文件中绑定的端口为444/442

  1. httpd-ahssl.conf
  2. httpd-ssl.conf

netstat-ano 查看端口占用情况,发现443确实被占用了,我们选择一个在这里面未被使用的端口

修改配置文件conf\httpd.conf,默认端口80改为8080(或其他未占用的端口)

在服务中右键启动服务

访问安装地址http://localhost:8080/ ,看到如下页面则访问成功


参数说明

详细内容请查看官网文档ab参数说明官网

部分常用参数说明

参数说明
-n测试会话中执行请求的根数,默认为1
-c一次产生的请求个数,默认1(并发请求数)
-t测试所持续的最大时间(秒),其内部隐含值(-n 50000)。可以用来对某个测试制定一个固定的时间范围,默认,没有时间限制。
-p需要POST的数据的文件
-TPOST数据所使用的Content-type头信息
-v设置显示信息的详细程度 - 4或更大值会显示头信息, 3或更大值可以显示响应代码(404, 200等), 2或更大值可以显示警告和其他信息。 -V 显示版本号并退出。
-w以HTML表的格式输出结果。默认是白色背景的两列宽度的一张表。
-i执行HEAD请求,而不是GET
-Ccookie-name=value 对请求附加一个Cookie:行。name=value的一个参数对,此参数可以重复。
-Pproxy-auth-username:password 对一个中转代理提供BASIC认证信任。用户名和密码由一个:隔开,并以base64编码形式发送。无论服务器是否需要(即, 是否发送了401认证需求代码),此字符串都会被发送

输出代码说明

结合一个输出样例作说明,ab -c 10 -n 10000 http://localhost:8888/test.html

输出key输出值说明
Server SoftwareLiziba服务器返回Server的值
Server Hostnamelocalhost服务器主机名
Server Port8888服务器端口
Document Path/test.html测试的页面文档地址
Document Length242313 bytes文档大小
Concurrency Level10并发数
Time taken for tests2.661 seconds整个测试持续时间
Complete requests10000完成的请求数量
Failed requests0失败的请求数量
Total transferred2423880000 bytes整个场景中的网络传输量
HTML transferred2423130000 bytes整个场景中HTML的网络传输量
Requests per second3757.39 [#/sec] (mean)每秒完成请求(每秒事务数),重点指标,mean表示平均值
Time per request2.661 [ms] (mean)平均事务响应时间,mean表示平均值
Time per request0.266 [ms] (mean, across all concurrent requests)每个请求实际运行时间的平均值
Transfer rate889400.26 [Kbytes/sec] received平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题
Connection Times (ms)min mean[+/-sd] median......网络上消耗时间的分解,具体请查看官网
Percentage of the requests served within a certain time (ms)......整个场景中所有请求的响应情况。在场景中每个请求都有一个响应时间,其中50%响应时间小于3ms,66%的响应时间小于3ms...(上图)