ab(Apache Bench)压力测试工具

ab(Apache Bench)压力测试工具,第1张

ab(Apache Bench)是啥?

ab是Apache自带的一个压力测试软件,可以通过ab命令和选项对某个URL进行压力测试。ab建议在linux环境下使用。

为啥要压力测试工具?

因为你不给你的网站压力,你不知道项目的最大的容量是多少,自己的知识有多少。 在一定范围里,压力达到一定程度,动力和容量也就达到顶峰 。所以说没有最大的容量,只有极致的性能优化。

压力测试工具,另一方面也为测试提供一个标准,为当前需要优化提供基础数据。

ab有什么能力?

ab作为Apache自带的软件,虽然性能不是最强,但是作为一般的压力测试已经足够了。

ab的安装

一般已经安装了Apache就不需要安装,需要安装的话可以自行搜索。

ab的主要命令

ab主要使用的两个选项就是-n和-c。其他选项使用命令 **ab -h **进行查看。

命令格式是:ab -n10 -c10 URL

命令解说:

自带的命令选项说明如下

上图所示,-n指的是请求URL的数量,-c是指每次请求的并发数。展示的命令格式的意义就是:对URL进行10次请求,每次并发数是10个,总共请求了100次。

注:URL最后一定要补充一个"/",如: http://www.baidu.com/

测试性能主要关心那几个点?

对于ab工具,我们需要关注的是服务器软件,每秒请求数(Requests per second),单个请求的耗时(Time per request)。

下面是测试的结果解析:

测试的几个原则

1、测试工具和测试数据时,使用到别人的网址时,-n和-c的参数不能太大。

2、测试当前的机器,最好用另一台机器测试。

3、测试修改结果,最好是某个功能完善后才测,否则会导致结果有差异。

Apache Bench(简称为ab)是 Apache 提供用于对Apache http server进行基准测试的工具。但是由于其安装和使用简单,所以也可以用于对HTTP接口的压力测试和性能测试。ab是一个命令行工具,使用ab命令可以模拟多线程并发请求,并且对负载机的要求很低,既不会占用很高CPU,也不会占用很多内存,但却会给目标服务器造成巨大的负载,其原理类似DDOS/CC攻击。

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

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

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

注意事项:

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

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

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

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

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

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

个人总结

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

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

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

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

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

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


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/681619.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-07-30
下一篇2023-07-30

发表评论

登录后才能评论

评论列表(0条)

    保存