1:找到apche配置
ab.exe
2:命令
ab -n1000 -c200 “请求路径” -n 请求次数 -c 并发数
3:参数详解
-n 请求次数 -c 并发数
Server Software: Apache/2.4.18 服务器软件版本
Server Hostname: www.06a.com 请求的URL
Server Port: 80 请求的端口号
Document Path: / 请求的服务器的路径
Document Length: 19590 bytes 页面长度 单位是字节
Concurrency Level: 200 并发数
Time taken for tests: 124.509 seconds 一共使用了124s
Complete requests: 1000 请求的次数
Failed requests: 9 失败的请求
(Connect: 0, Receive: 0, Length: 9, Exceptions: 0)
Total transferred: 19669661 bytes 总共传输的字节数 http头信息
HTML transferred: 19472463 bytes 实际页面传递的字节数
Requests per second: 8.03 [#/sec] (mean) 每秒多少个请求
Time per request: 24901.805 [ms] (mean) 平均每个用户等待多长时间
Time per request: 124.509 [ms] (mean, across all concurrent requests) 服务器平均用多长时间处理
Transfer rate: 154.28 [Kbytes/sec] received 每秒获取多少数据
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 3.0 0 62
Processing: 4679 17276 7877.7 15587 64050
Waiting: 4675 17273 7877.1 15586 64050
Total: 4679 17277 7877.8 15588 64051
Percentage of the requests served within a certain time (ms)
50% 15588 50%的用户的请求15588ms内返回
66% 21097
75% 24071
80% 25294
90% 27939
95% 29550
98% 32122
99% 34885
100% 64051 (longest request)
https://www.yduba.com/biancheng-3762629504.html
在学习 ab 工具之前,我们需要了解几个关于压力测试的概念。
吞吐量
指在一次性能测试过程中网络上传输的数据量的总和。
对于交互式应用来说,吞吐量指标反映的是服务器承受的压力,在容量规划的测试中,吞吐量是一个重点关注的指标,因为它能够说明系统级别的负载能力,另外,在性能调优过程中,吞吐量指标也有重要的价值。如一个大型工厂,他们的生产效率与生产速度很快,一天生产10W吨货物,结果工厂的运输能力不行,就两辆小型三轮车一天拉2吨的货物,比喻有些夸张,但我想说明的是这个运输能力是整个系统的瓶颈。
提示,用吞吐量来衡量一个系统的输出能力是极其不准确的。用个最简单的例子说明,一个水龙头开一天一夜,流出10吨水;10个水龙头开1秒钟,流出0.1吨水,当然是一个水龙头的吞吐量大。你能说1个水龙头的出水能力比10个水龙头强?所以,我们要加单位时间,看谁1秒钟的出水量大,这就是吞吐率。
吞吐率
单位时间内网络上传输的数据量,也可以指单位时间内处理客户请求数量。它是衡量网络性能的重要指标,通常情况下,吞吐率用“字节数/秒”来衡量,当然,你可以用“请求数/秒”和“页面数/秒”来衡量。其实,不管是一个请求还是一个页面,它的本质都是在网络上传输的数据,那么来表示数据的单位就是字节数。
不过以不同的方式表达的吞吐量可以说明不同层次的问题。例如,以字节数/秒方式表示的吞吐量主要受网络基础设置、服务器架构、应用服务器制约;以请求数/秒方式表示的吞吐量主要受应用服务器和应用代码的制约。
但是从业务的角度看,吞吐率也可以用“业务数/小时或天”、“访问人数/小时或天”、“页面访问量/小时或天”来衡量。例如,在银行卡审批系统中,可以用“千件/小时”来衡量系统的业务处理能力。那么,从用户的角度,一个表单提交可以得到一次审批。又引出来一个概念—事务。
事务
就是用户某一步或几步操作的集合。不过,我们要保证它有一个完整意义。比如用户对某一个页面的一次请求,用户对某系统的一次登录,淘宝用户对商品的一次确认支付过程。这些我们都可以看作一个事务。那么如何衡量服务器对事务的处理能力。又引出一个概念—-TPS
TPS
每秒钟系统能够处理事务或交易的数量,它是衡量系统处理能力的重要指标。
点击率
点击率可以看做是TPS的一种特定情况。点击率更能体现用户端对服务器的压力。TPS更能体现服务器对客户请求的处理能力。
每秒钟用户向web服务器提交的HTTP请求数。这个指标是web 应用特有的一个指标;web应用是“请求-响应”模式,用户发一个请求,服务器就要处理一次,所以点击是web应用能够处理的交易的最小单位。如果把每次点击定义为一个交易,点击率和TPS就是一个概念。容易看出,点击率越大。对服务器的压力也越大,点击率只是一个性能参考指标,重要的是分析点击时产生的影响。
需要注意的是,这里的点击不是指鼠标的一次“单击”操作,因为一次“单击”操作中,客户端可能向服务器发现多个HTTP请求。
并发连接数
某个时刻服务器所接受的请求数目,简单的讲,就是一个会话。
并发用户数
要注意区分这个概念和并发连接数之间的区别,一个用户可能同时会产生多个会话,也即连接数。
用户平均请求等待时间
处理完成所有请求数所花费的时间/ (总请求数 / 并发用户数),即
Time per request = Time taken for tests /( Complete requests / Concurrency Level)
服务器平均请求等待时间
计算公式:处理完成所有请求数所花费的时间 / 总请求数,即
Time taken for / testsComplete requests
可以看到,它是吞吐率的倒数。
同时,它也=用户平均请求等待时间/并发用户数,即
Time per request / Concurrency Level
概念介绍
ab是Apache超文本传输协议(HTTP)的性能测试工具。其设计意图是描绘当前所安装的Apache的执行性能,主要是显示你安装的Apache每秒可以处理多少个请求。
下载和安装,这里不再介绍,因为默认情况下,安装好 apache,里面就会自带这个工具。
使用方法
ab [options] [http[s]://]hostname[:port]/path
运行 ab –help 可以得到帮助和查看参数。这里对常用参数,进行相关说明,如下:
-n 在测试会话中所执行的请求个数,默认时,仅执行一个请求。
-c 一次产生的请求个数,默认是一次一个。
-t 测试所进行的最大秒数,默认时,没有时间限制。
-p 包含了需要POST的数据的文件,文件格式如“p1=1&p2=2”. 使用方法是 -p 111.txt
-T POST数据所使用的Content-type头信息
-C 设置请求时带上 Cookie
-H 设置请求头
实例
比如:我们要对 www.baidu.com 进行测试,共请求 100 次,每次模拟10个并发数,我们可以输入以下命令:
ab -n 100 -c 10 http://www.baidu.com/
运行后,得到的结果如图:
这里对每一段做一下细分讲解:
1)这段展示的是web服务器的信息,可以看到服务器采用的是BWS,域名是www.baidu.com,端口是80
2)这段是关于请求的文档的相关信息,所在位置“/”,文档的大小为102257 bytes(此为http响应的正文长度)
3)这段展示了压力测试的几个重要指标
Concurrency Level: 10 # 并发请求数
Time taken for tests: 16.117 seconds # 整个测试持续的时间
Complete requests: 100 # 完成的请求数
Failed requests: 98 # 失败的请求数
(Connect: 0, Receive: 0, Length: 98, Exceptions: 0)
Write errors: 0 # 写入错误
Total transferred: 10324609 bytes # 整个场景中的网络传输量
HTML transferred: 10228678 bytes # 整个场景中的HTML内容传输量
# 吞吐率,大家最关心的指标之一,相当于 LR 中的每秒事务数,后面括号中的 mean 表示这是一个平均值
Requests per second: 6.20 [#/sec] (mean)
#用户平均请求等待时间,大家最关心的指标之二,相当于 LR 中的平均事务响应时间,后面括号中的 mean 表示这是一个平均值
Time per request: 1611.698 [ms] (mean)
# 服务器平均请求处理时间,大家最关心的指标之三
Time per request: 161.170 [ms] (mean, across all concurrent requests)
# 平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题
Transfer rate: 625.59 [Kbytes/sec] received
5)这段表示网络上消耗的时间的分解
6)这段是每个请求处理时间的分布情况,50%的处理时间在1592ms内,66%的处理时间在1634ms内…,重要的是看90%的处理时间