轻量级压测工具 Apache Bench 实战

2024-04-16 20:36

本文主要是介绍轻量级压测工具 Apache Bench 实战,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

注意事项:

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

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

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

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

5)不支持发送 https 请求;

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

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

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 属于超轻量级,在开发测试过程中十分适合做单接口压测。

行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群: 320231853,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

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

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

这篇关于轻量级压测工具 Apache Bench 实战的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/909826

相关文章

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

使用Python自建轻量级的HTTP调试工具

《使用Python自建轻量级的HTTP调试工具》这篇文章主要为大家详细介绍了如何使用Python自建一个轻量级的HTTP调试工具,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录一、为什么需要自建工具二、核心功能设计三、技术选型四、分步实现五、进阶优化技巧六、使用示例七、性能对比八、扩展方向建

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Pandas使用SQLite3实战

《Pandas使用SQLite3实战》本文主要介绍了Pandas使用SQLite3实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1 环境准备2 从 SQLite3VlfrWQzgt 读取数据到 DataFrame基础用法:读

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

Python实战之屏幕录制功能的实现

《Python实战之屏幕录制功能的实现》屏幕录制,即屏幕捕获,是指将计算机屏幕上的活动记录下来,生成视频文件,本文主要为大家介绍了如何使用Python实现这一功能,希望对大家有所帮助... 目录屏幕录制原理图像捕获音频捕获编码压缩输出保存完整的屏幕录制工具高级功能实时预览增加水印多平台支持屏幕录制原理屏幕