轻量级压测工具Apache Bench实战

  • 📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢交流讨论:欢迎加入我们一起学习!
  • 📢资源分享:耗时200+小时精选的「软件测试」资料包
  • 📢 最困难的时候,也就是我们离成功不远的时候!

目录

    • 安装和使用
    • 结果分析
    • 个人总结
    • 最后

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

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

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

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

安装和使用

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注意使用正确的编码格式,否则请求参数服务器端可能无法识别;

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

结果分析

从上面可以看到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后手动强制杀死进程,这就导致有些请求可能被漏掉,但通过比较聚合数据,基本上误差是在可以接受的范围内。

个人总结

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

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

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

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

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

  • 软件自身耗费资源:

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

最后

如果你想学习自动化测试,那么下面这套视频应该会帮到你很多

如何逼自己1个月学完自动化测试,学完即就业,小白也能信手拈来,拿走不谢,允许白嫖....

最后我这里给你们分享一下我所积累和整理的一些文档和学习资料,有需要直接领取就可以了!


以上内容,对于软件测试的朋友来说应该是最全面最完整的备战仓库了,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这个仓库也已经帮助了很多的软件测试的学习者,希望也能帮助到你。

​​

​​​​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/207066.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安防视频EasyCVR平台太阳能供电+4G摄像头视频监控方案的建设

在工地、光伏、风电站、水库河道等场景中,以及一些偏远地区的项目现场,会存在无网无电情况,大大制约了视频监控系统建设的效率及可行性。在这种场景中,我们也可以通过太阳能供电4G监控摄像机的方案,满足偏远地区无网无…

【Linux】掌握 Vim 的基本使用方法:Vimtutor 学习指南

Vim 是一个功能强大的文本编辑器,广受程序员和系统管理员的喜爱。然而,由于其独特的编辑模式和命令行界面,对于初学者来说可能有一些学习曲线。不过不用担心,Vim 自带了一个交互式教程程序 Vimtutor,通过它你可以轻松掌…

论文阅读 Forecasting at Scale (二)

最近在看时间序列的文章,回顾下经典 论文地址 项目地址 Forecasting at Scale 3.2、季节性 3.3、假日和活动事件3.4、模型拟合3.5、分析师参与的循环建模4、自动化预测评估4.1、使用基线预测4.2、建模预测准确性4.3、模拟历史预测4.4、识别大的预测误差 5、结论6、致…

防爆智能安全帽、防爆手持终端,防爆智能矿灯守护安全,在煤矿安全生产远程可视化监管中的应用

煤矿安全新守护:如何通过防爆智能装备实现远程可视化监管 煤矿是国民经济的重要支柱产业,但长期以来,安全生产事故的频发一直是困扰煤矿行业发展的严峻问题。安全生产事故不仅危及矿工的生命安全,也对企业和地方经济造成了重大的…

【Vue】Node.js的安装与环境变量的配置

目录 一.安装 官网: 二.环境变量的配置 node.cache node.global 一.安装 官网: https://nodejs.org/en/download 下载完之后,安装的时候一直点next即可,也可以根据自己的需求进行勾选 二.环境变量的配置 这两个文件可以 自…

opencv- CLAHE 有限对比适应性直方图均衡化

CLAHE(Contrast Limited Adaptive Histogram Equalization)是一种对比度有限的自适应直方图均衡化技术,它能够提高图像的对比度而又避免过度增强噪声。 在OpenCV中,cv2.createCLAHE() 函数用于创建CLAHE对象,然后可以…

头发的方向图(2D和3D)与合成

首先,我们从一个不受光照限制的环境中拍摄一组输入图像,这些图像包含了头发的不同视角和姿态。我们对这些图像进行半自动的分割,将头发从背景中分离出来,然后使用PMVS ,一种先进的多视角立体算法,来重建一个…

2023年09月 Scratch(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 点击绿旗,运行程序后,舞台上的图形是?( ) A:画笔粗细为4的三角形 B:画笔粗细为5的六边形 C:画笔粗细为4的六角形 D:画笔粗细为5的三角形 答案:D 第2题 如下图所示,从所给…

Selenium浏览器自动化测试框架

介绍 Selenium [1] 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome&#xff…

Mysql 递归查询子类Id的所有父类Id

文章目录 问题描述先看结果表结构展示实现递归查询集合查询结果修复数据 问题描述 最近开发过程中遇到一个问题,每次添加代理关系都要去递归查询一下它在不在这个代理关系树上.很麻烦也很浪费资源.想着把代理关系的父类全部存起来 先看结果 表结构展示 表名(t_agent_user_rela…

python爬虫教程:selenium常用API用法和浏览器控制

文章目录 selenium apiwebdriver常用APIwebelement常用API 控制浏览器 selenium api selenium新版本(4.8.2)很多函数,包括元素定位、很多API方法均发生变化,本文记录以selenium4.8.2为准。 webdriver常用API 方法描述get(String url)访问目标url地址&…

LINUX入门篇【8】----计算机组成原理以及OS知识的总结

前言: 从而本篇文章开始,我们将进入LINUX的进程篇,但学习进程之前,我们首先需要重新认识我们的计算机,并且正确认识到控制进程的OS,即操作系统是怎样在计算机运行的过程中起到作用的。下面就让我们一同去了…