压力测试短小精悍小工具ab(apachebench)介绍

压力测试短小精悍小工具ab(apachebench)介绍

ab工具简介

ab的全称是Apache Bench,是 Apache 服务器自带的一个web压力测试工具,简称ab。ab又是一个命令行工具,对发起负载的本机要求很低,根据ab命令可以创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访问,因此可以用来测试目标服务器的负载压力。优点是小巧简单,上手学习较快,可以提供需要的基本性能指标,缺点就是没有图形化结果,不能监控。

注意:ab工具不会占用很高CPU,也不会占用很多内存。但却会给目标服务器造成巨大的负载,其原理类似CC攻击。测试使用时需要注意,不能一次上太多的负载。可能造成目标服务器资源耗完,严重时甚至导致死机。




安装

window系统安装,通过官网下载apache zip安装包,解压后放在C(or)D盘根目录
下载网址:https://www.apachehaus.com/cgi-bin/download.plx
如下图位置点击下载zip包
在这里插入图片描述


启动ab工具

以安装路径为D:\Apache24\bin为例
打开终端输入命令
切换D盘
cd D:\Apache24\bin
输入ab --help,显示所有指令集合,即ab工具安装成功且能正常启动
在这里插入图片描述
参数解析:
-n 测试会话中所执行的请求个数,默认仅执行一个请求,如果不指定-t参数,默认执行完所有请求后自动结束压测

-c 一次产生的请求个数,即同一时间发出多少个请求,默认为一次一个,此参数可以控制对服务器的单位时间内的并发量

-t 测试所进行的最大秒数,默认为无时间限制….其内部隐含值是[-n 50000],它可以使对服务器的测试限制在一个固定的总时间以内,如果时间到了,请求个数还未执行完,也会被停止。

-p 包含了需要POST的数据的文件,数据格式以接口请求参数定义的格式为准,eg. xxx.json

-T POST 数据所使用的Content-type头信息,指定请求参数格式,eg. application/json

-r 在接口返回失败后,默认会终止压测,添加此参数后压测会继续进行

-v 设置显示信息的详细程度

-w 以HTML表格的形式输出结果,默认是白色背景的两列宽度的一张表

-i 以HTML表格的形式输出结果,默认是白色背景的两列宽度的一张表

-x 设置属性的字符串,此属性被填入[/table]

-y 设置属性的字符串

-z 设置[table]属性的字符串

-C 对请求附加一个Cookie行,其典型形式是name=value的参数对,此参数可以重复

-H 对请求附加额外的头信息,此参数的典型形式是一个有效的头信息行,其中包含了以冒号分隔的字段和值的对(如”Accept-Encoding:zip/zop;8bit”)

-A HTTP验证,用冒号:分隔传递用户名及密码

-P 无论服务器是否需要(即是否发送了401认证需求代码),此字符串都会被发送

-X 对请求使用代理服务器

-V 显示版本号并退出

-k 启用HTTP KeepAlive(长连接)功能,即在一个HTTP会话中执行多个请求,默认为不启用KeepAlive功能

-d 不显示”percentage served within XX [ms] table”的消息(为以前的版本提供支持)

-S 不显示中值和标准背离值,且均值和中值为标准背离值的1到2倍时,也不显示警告或出错信息,默认会显示最小值/均值/最大值等(为以前的版本提供支持)

-g 把所有测试结果写入一个’gnuplot’或者TSV(以Tab分隔的)文件

-e 产生一个以逗号分隔的(CSV)文件,其中包含了处理每个相应百分比的请求所需要(从1%到100%)的相应百分比的(以微秒为单位)时间

-h 显示使用方法

-k 发送keep-alive指令到服务器端


开始测试

输入命令
ab -n 100 -c 10 https://www.baidu.com/
例如:ab -n 100 -c 10
其中-n表示请求数,-c表示并发数


结果分析

上面的命令运行完毕后就出来测试报告,如下图在这里插入图片描述
测试报告指标详细解析:
Server Software: nginx
Server Hostname:
#请求的URL主机名
Server Port: 80
#请求端口
Document Path: /#/
#请求路径
Document Length: 15466 bytes
#HTTP响应数据的正文长度

Concurrency Level: 10
#并发用户数,这是我们设置的参数之一(-c)
Time taken for tests: 1.169 seconds
#所有这些请求被处理完成所花费的总时间 单位秒
Complete requests: 100
#总请求数量,这是我们设置的参数之一(-n)
Failed requests: 0
#表示失败的请求数量
Total transferred: 1577000 bytes
#所有请求的响应数据中正文数据的总和,也就是减去了Total transferred中HTTP响应数据中的头信息的长度
HTML transferred: 1546600 bytes
#吞吐量,计算公式:Complete requests/Time taken for tests 总请求数/处理完成这些请求数所花费的时间
Requests per second: 85.55 [#/sec] (mean)
#用户平均请求等待时间,计算公式:Time token for tests/(Complete requests/Concurrency Level)。处理完成所有请求数所花费的时间/(总请求数/并发用户数)
Time per request: 116.889 [ms] (mean)
#用户平均请求等待时间,计算公式:Time token for tests/(Complete requests/Concurrency Level)。处理完成所有请求数所花费的时间/(总请求数/并发用户数)
Time per request: 11.689 [ms] (mean, across all concurrent requests)
#服务器平均请求等待时间,计算公式:Time taken for tests/Complete requests,正好是吞吐率的倒数。也可以这么统计:Time per request/Concurrency Level
Transfer rate: 1317.52 [Kbytes/sec] received
#表示这些请求在单位时间内从服务器获取的数据长度,计算公式:Total trnasferred/ Time taken for tests,这个统计很好的说明服务器的处理能力达到极限时,其出口宽带的需求量。

Connection Times (ms)
min mean[+/-sd] median max
Connect: 4 11 5.2 14 20
Processing: 13 95 18.0 98 140
Waiting: 8 58 27.2 56 140
Total: 29 106 17.5 109 146

Percentage of the requests served within a certain time (ms)
50% 109
#50%的请求在109毫秒内返回(以下同此意思)
66% 111
75% 113
80% 116
90% 120
95% 123
98% 132
99% 146
#99%的请求在146毫秒内返回
100% 146 (longest request)


延伸

以上列举的为一个简单的get请求url做压测,还可以做post请求压测,如下:
1.准备测试post接口url,找到post参数
2.新建一个文本文档,里面内容填入post参数内容(可以是json格式,可以是&格式)如图
在这里插入图片描述
3.输入指令:ab -n 1 -c 1 -p D:\Apache24\ceshi.txt -T application/x-www-form-urlencoded “post接口url地址”
其中:
-p 包含POST参数的文件
-T 内容类型。这个一般和-p 一起使用(Content-type header to use for POST data.)
D:\Apache24\ceshi.txt为存放post请求参数的路径
application/x-www-form-urlencoded为固定格式
最后url地址需要加引号
得到的结果如下:
在这里插入图片描述
这样就完成了一次post请求url压测;参数的分析详见上面示例

以上为简单的ab指令执行get/post请求url压力测试;除了简单的指令外还有更多复杂的指令来实现复杂的场景,以后将会做额外补充。也可网上查找相关资料进行学习归纳。谢谢阅读

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小胖子xpp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值