Apache压测工具ab(Apache Bench)工具的下载安装和使用示例

场景

Jmeter进行http接口压力测试:

Jmeter进行http接口压力测试_接口压测两万量-CSDN博客

上面讲压测工具Jmeter的使用,下面介绍另外一个ab(Apache Bench)压测工具的使用。

apache bench

apache bench是apache自带的压力测试工具。

ab不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。

ab工具上手学习较快,可以提供需要的基本性能指标,但没有图形化结果,不能监控。

因此可以用作临时紧急任务和简单测试。

Apache的ab命令模拟多线程并发请求,测试服务器负载压力,也可以测试nginx、lighthttp、IIS等其它Web服务器的压力。

ab命令对发出负载的计算机要求很低,既不会占用很多CPU,也不会占用太多的内存,但却会给目标服务器造成巨大的负载。

在带宽不足的情况下,最好是本机进行测试,建议使用内网的另一台或者多台服务器通过内网进行测试,这样得出的数据,准确度会高很多。

远程对web服务器进行压力测试,往往效果不理想(因为网络延时过大或带宽不足)。

进入apache官网

Welcome! - The Apache HTTP Server Project

Download-Files for Microsoft Winodws,这里是在windows电脑上

点击Apache Lounge

下载对应的zip并解压即可,在bin目录下打开cmd,输入

ab -V

则是下载运行成功。

注:

博客:
霸道流氓气质-CSDN博客

实现

interfake模拟get和post接口

使用接口模拟工具模拟一个get和post请求

方式比较多,这里使用如下方式。

HTTP JSON接口模拟工具interfake的使用(模拟接口返回json数据):

HTTP JSON接口模拟工具interfake的使用(模拟接口返回json数据)-CSDN博客

其中interfake模拟post请求的写法为

复制代码
interfake.post('/badaoPost').status(200)
.body(
    { 
        "id": 123,
        "name": "霸道的程序猿",
        "age": 100,
        "address":"青岛",
        "banji":"一班"
    }
);
interfake.listen(666);

完整的js

复制代码
var Interfake = require('interfake');
var interfake = new Interfake();

interfake.get('/badao').status(200)
.body(
    { 
        "id": 123,
        "name": "霸道的程序猿",
        "age": 100,
        "address":"青岛",
        "banji":"一班"
    }
);
interfake.post('/badaoPost').status(200)
.body(
    { 
        "id": 123,
        "name": "霸道的程序猿",
        "age": 100,
        "address":"青岛",
        "banji":"一班"
    }
);
interfake.listen(666);

使用ab压力测试get请求接口

接口模拟成功后,对get请求接口进行压测

在上面bin下ab.exe所在的目录下打开的cmd中,输入

复制代码
​ab -n 100 -c 10 http://127.0.0.1:666/badaoStu

其中-n表示请求数,-c表示并发数

其它参数

-n

即requests,用于指定压力测试总共的执行次数。

-c

即concurrency,用于指定压力测试的并发数。

-t

即timelimit,等待响应的最大时间(单位:秒)。

-b

即windowsize,TCP发送/接收的缓冲大小(单位:字节)。

-p

即postfile,发送POST请求时需要上传的文件,此外还必须设置-T参数。

-u

即putfile,发送PUT请求时需要上传的文件,此外还必须设置-T参数。

-T

即content-type,用于设置Content-Type请求头信息,例如:application/x-www-form-urlencoded,默认值为text/plain。

-v

即verbosity,指定打印帮助信息的冗余级别。

-w

以HTML表格形式打印结果。

-i

使用HEAD请求代替GET请求。

-x

插入字符串作为table标签的属性。

-y

插入字符串作为tr标签的属性。

-z

插入字符串作为td标签的属性。

-C

添加cookie信息,例如:"Apache=1234"(可以重复该参数选项以添加多个)。

-H

添加任意的请求头,例如:"Accept-Encoding: gzip",请求头将会添加在现有的多个请求头之后(可以重复该参数选项以添加多个)。

-A

添加一个基本的网络认证信息,用户名和密码之间用英文冒号隔开。

-P

添加一个基本的代理认证信息,用户名和密码之间用英文冒号隔开。

-X

指定使用的代理服务器和端口号,例如:"126.10.10.3:88"。

-V

打印版本号并退出。

-k

使用HTTP的KeepAlive特性。

-d

不显示百分比。

-S

不显示预估和警告信息。

-g

输出结果信息到gnuplot格式的文件中。

-r

指定接收到错误信息时不退出程序。

-e

输出结果信息到CSV格式的文件中。

-h

显示用法信息,其实就是ab -help。

虽然ab可以配置的参数选项比较多,但是,一般情况下我们只需要使用形如ab -n 数字 -c 数字 url路径的命令即可。

ab压测结果说明

上面的压测结果

server开头的三个是web服务器的信息。

Document开头的两个是请求的文档的位置以及大小/http响应的正文长度。

中间重要部分说明

Concurrency Level: 100

//并发请求数

Time taken for tests: 50.872 seconds

//整个测试持续的时间

Complete requests: 1000

//完成的请求数

Failed requests: 0

//失败的请求数

Total transferred: 13701482 bytes

//整个场景中的网络传输量

HTML transferred: 13197000 bytes

//整个场景中的HTML内容传输量

Requests per second: 19.66 #/sec (mean)

//吞吐率,大家最关心的指标之一,相当于 LR 中的每秒事务数,后面括号中的 mean 表示这是一个平均值

Time per request: 5087.180 ms (mean)

//用户平均请求等待时间,大家最关心的指标之二,相当于 LR 中的平均事务响应时间,后面括号中的 mean 表示这是一个平均值

Time per request: 50.872 ms (mean, across all concurrent requests)

//服务器平均请求处理时间,大家最关心的指标之三

Transfer rate: 263.02 Kbytes/sec received

//平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题

最后面的这段是每个请求处理时间的分布情况,50%的处理时间在8ms内,66%的处理时间在8ms内...,

重要的是看90%的处理时间。

ab中压测post请求

cmd中执行如下

复制代码
​ab -n 100 -c 10 -T application/json -p D:/test/payload.json http://127.0.0.1:666/badaoPost

其中-p代表请求的body,其文件内容为

复制代码
    { 
        "id": 123,
        "name": "霸道的程序猿",
        "age": 100,
        "address":"青岛",
        "banji":"一班"
    }

压测结果

相关推荐
网络豆14 天前
Apache Maven 鸿蒙 PC 适配全记录:把 JVM 构建工具交付到 HiShell
maven·apache·harmonyos
网络豆14 天前
Apache Hive 鸿蒙 PC 适配全记录:以 Qt 客户端打通 HiveQL、监控与元数据访问
hive·apache·harmonyos
网络豆14 天前
Apache HBase 鸿蒙 PC 适配全记录:用 Qt 原生客户端打通 REST 管理与数据读写
apache·hbase·harmonyos
无巧不成书021815 天前
Apache Tomcat 9 下载全指南(Windows,Linux,macOS):版本选型、国内镜像、SHA-512 与 PGP 完整性校验
windows·tomcat·apache
Dream-Y.ocean15 天前
鸿蒙平台 Apache Tomcat 管理控制台适配实战:基于 Electron 壳方案的真实 HTTP 服务器实现
tomcat·apache·harmonyos
betazhou15 天前
Apache seatunel常用配置参数解析说明
apache·seatunnel
凤山老林16 天前
Spring Boot 集成 Apache Kafka Streams 构建流处理应用:状态存储、窗口聚合与
spring boot·kafka·apache
DolphinScheduler社区16 天前
Apache DolphinScheduler 8 月报:权限安全加固,调度补火上线,性能与稳定性持续提升
大数据·安全·开源·apache·任务调度·海豚调度
sbjdhjd17 天前
从 7 字符文件名拼接到二维数组取值:PHP 无参函数限制下的受控靶场复盘 | (7字符绕过)
网络·nginx·安全·网络安全·云计算·php·apache
Jackyzhe18 天前
Apache Iceberg Variant 类型:v3 半结构化数据不再「二选一」
apache