轻量级压测工具Apache Bench实战!

1043 篇文章 0 订阅
1018 篇文章 3 订阅

Apache Bench(简称为ab)是Apache提供用于对Apache http server进行基准测试的工具。但是由于其安装和使用简单,所以也可以用于对HTTP接口的压力测试和性能测试。

ab是一个命令行工具,使用ab命令可以模拟多线程并发请求,并且对负载机的要求很低,既不会占用很高CPU,也不会占用很多内存,但却会给目标服务器造成巨大的负载,其原理类似DDOS/CC攻击

ab可以提供需要的基本性能指标;但是缺点就是没有图形化结果,不能监控。

Tips:在带宽不足的情况下,最好是本机进行测试,建议使用内网的另一台或者多台服务器通过内网进行测试,这样得出的数据,准确度会高很多。远程对web服务器进行压力测试,往往效果不理想(因为网络延时过大或带宽不足)

01、安装和使用

Apache本身会自带ab,如果没有安装Apache,以下方法可以用来便捷的安装ab工具:

  • Ubuntu

    apt-cache install apache2-util

  • CentOS

    yum install httpd-tools

  • MacOS
    系统自带apache,查看版本信息:

图片

  • Windows

    Windows下可以在官网下载最新版本 ,然后按照引导安装即可

图片

使用以上方法安装完成后,在已添加环境变量的情况下,可以直接使用ab -V 检查是否安装成功

图片

使用

图片

  • Options

    图片

  • Usage

    图片

注意事项:

  • result.html中会打印每次请求的请求头信息,请求总数较大时,重定向结果输出时可以不指定-v参数

  • 使用-H Content-Type:application/json不能代替-T  

  • "application/json", 使用前者服务器可能会返回400 bad requests;

  • 如果提示ab: invalid URL,可能是URL最右边缺少/,例如 http://www.example.com 需要改为http://www.example.com/ ;

  • 不支持发送https请求;

  • postfile注意使用正确的编码格式,否则请求参数服务器端可能无法识别;

  • 调试请求时,对接口返回的中文字符的支持不友好,会显示乱码;

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036【暗号:csdn999】

02、结果分析

从上面可以看到ab支持参数很多,但一般来说只有-c 和-n 参数是必要的,例如:

图片

AB和JMETER比较

下面分别用 ab 和 jmeter 压测一个Get请求,然后通过对比效果,来简单分析二者的异同:

1、ab

在ab命令行中设置10个并发,持续60s,结果如下:

图片

2、Jmeter

在JMETER GUI界面中编辑脚本信息,线程数设置10,R-U时间设置1s,循环次数设置Forever。如下图:

图片

然后使用 JMETER 命令行模式运行脚本,这是因为使用非GUI模式可以节省负载机资源,测试结果更加准确

图片

在GUI界面中打开JmeterWar.csv文件,如下:

图片

二者对比:

图片

通过以上表格数据进行分析,可以发现二者的测试效果竟然是如此的接近,但实际上述数据并不是太准确,因为Jmeter实际不支持精确的测试时间的限制,所以我是到达60s后手动强制杀死进程,这就导致有些请求可能被漏掉,但通过比较聚合数据,基本上误差是在可以接受的范围内。

03、个人总结

  • jmeter是一次完整的请求和返回, 而AB只是发出去请求,并不对返回做处理,只是请求发送成功或者失败。所以从准确性来说,Jmeter更准确,而AB速度更快,可以用最少的机器资源产生更多的访问请求;

  • Jmeter本身支持断言、可变参数和CSV数据集的输入,能设定更加灵活多变的的测试场景,而AB则不支持(暂时没想到);

  • Jmeter可以提供更加详细的统计结果数据,比如接口错误信息、单线程的请求时间等,而AB则不支持;

  • Jmeter不支持精确时间的压测,比如压测10分钟,但是AB支持;

  • Jmeter支持分布式的压测集群,且支持函数,AB不支持;

  • 软件自身耗费资源:

    Jmeter由于比较重,且统计了很多结果数据,比AB耗时耗费资源多,AB属于超轻量级,在开发测试过程中十分适合做单接口压测。

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
 

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值