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":"一班"}

压测结果

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

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

相关文章

基于联盟链Fabric 2.X 的中药饮片代煎配送服务与监管平台

业务背景 近年来,随着公众对中医药青睐有加,中药代煎服务作为中医药现代化的重要一环,在全国各地蓬勃兴起。鉴于传统煎煮方式的繁琐耗时,医疗机构纷纷转向与第三方中药饮片企业合作,采用集中代煎模式。这些第三方煎药中…

没有51基础,能不能学好STM32?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「STM32的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!! 我们通常准备攻读一本大部…

浅谈监听器之断言结果

浅谈监听器之断言结果 在进行测试过程中,断言是一种关键组件,用于验证采样器(如HTTP请求)的响应数据是否符合预期。而“断言结果”监听器则是展示这些断言执行情况的重要工具,它帮助用户快速识别哪些断言通过或未通过…

【JAVA多线程】线程的状态控制

目录 1.JDK中的线程状态 2.基础操作 2.1关闭 2.2中断 2.3.等待、唤醒 2.4.阻塞、唤醒 1.JDK中的线程状态 在JDK的线程体系中线程一共6种状态: NEW(新建): 当线程对象创建后,但尚未启动时,线程处于新建状态。RUN…

python毕业设计选题校园食堂菜谱推荐系统

✌网站介绍:✌10年项目辅导经验、专注于计算机技术领域学生项目实战辅导。 ✌服务范围:Java(SpringBoo/SSM)、Python、PHP、Nodejs、爬虫、数据可视化、小程序、安卓app、大数据等设计与开发。 ✌服务内容:免费功能设计、免费提供开题答辩P…

stack(leetcode练习题,牛客)

文章目录 STL用法总结32 最长有效括号思路代码 496 下一个最大元素思路代码 856 括号的分数思路 最优屏障思路代码 STL用法总结 关于stack的知识,可以看点击查看上面的博客,以下题目前三个全在leetcode,最后一个在牛客 32 最长有效括号 思路…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第五十章 Linux设备树

i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

代理IP在数据采集中具体有哪些作用

在当今信息化高速发展的时代,从市场趋势分析到消费者行为预测,从产品优化到服务改进,大数据都在其中扮演着不可或缺的角色。但数据的采集、整理和分析并非易事,特别是在面对海量的网络数据时,我们往往需要借助一些技术…

前端 SSE 长连接

使用 const options {withCredentials: true, // 默认 false}const eventSource new EventSource(/api, options);eventSource.addEventListener(open, () > {});eventSource.onmessage (event) > {}; // 或addEventListener(message,callback)eventSource.addEvent…

程序员拔火罐技能的分享

一.背景 之前为了考“中医康复理疗师”的证书,自学了拔火罐。自学主要是在自己大腿上练习,然后拿家人做小白鼠。后来考试没有那么严格也就顺利通过了。操作过程中,积累的一些小知识,分享给大家,有空在家里给家人服务体…

CTF ssrf 基础入门 (一)

0x01 引言 我发现我其实并不是很明白这个东西,有些微妙,而且记忆中也就记得Gopherus这个工具了,所以重新学习了一下,顺便记录一下吧 0x02 辨别 我们拿到一个题目,他的名字可能就是题目类型,但是也有可能…

FastAPI(七十三)实战开发《在线课程学习系统》接口开发-- 回复留言

源码见:"fastapi_study_road-learning_system_online_courses: fastapi框架实战之--在线课程学习系统" 之前文章分享FastAPI(七十二)实战开发《在线课程学习系统》接口开发-- 留言列表开发,这次我们分享如何回复留言 按…

Jenkins+Gitlab持续集成综合实战

一、持续集成应用背景: DevOps:(英文Development(开发)和Operations(技术运营)的组合)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程&#…

NCRE3 2-1 网络总体设计基本方法

这部分记忆的比较多 概览 设计网络建设总体目标确定网络系统方案设计原则网络系统总体设计设计网络拓扑结构进行网络设备选型网络系统安全设计 设计网络建设总体目标 这部分视频没说到 确定网络系统方案设计原则 这部分视频没说到 网络系统总体设计 核心层网络结构设计 …

嵌入式Linux八股(四)——MCURTOS

嵌入式Linux八股完整文章目录 嵌入式Linux八股(一)——语言篇_嵌入式软件八股-CSDN博客 嵌入式Linux八股(二)——Linux_linux嵌入式的八股文有哪些-CSDN博客 嵌入式Linux八股(三)——计算机基础_嵌入式哪…

【Vue实战教程】之Vue工程化项目详解

Vue工程化项目 随着多年的发展,前端越来越模块化、组件化、工程化,这是前端发展的大趋势。webpack是目前用于构建前端工程化项目的主流工具之一,也正变得越来越重要。本章节我们来详细讲解一下如何使用webpack搭建Vue工程化项目。 1 使用we…

基于Python的哔哩哔哩国产动画排行数据分析系统

需要本项目的可以私信博主,提供完整的部署、讲解、文档、代码服务 随着经济社会的快速发展,中国影视产业迎来了蓬勃发展的契机,其中动漫产业发展尤为突出。中国拥有古老而又璀璨的文明,仅仅从中提取一部分就足以催生出大量精彩的…

源码拆解SpringBoot的自动配置机制

SpringBoot相比于Spring系列的前作,很大的一个亮点就是将配置进行了简化,引入了自动化配置,仅靠几个注解和yml文件就取代了之前XML的繁琐配置机制,这也是SpringBoot的独有特点,下面我们从源码角度,一点点拆…

Golang | Leetcode Golang题解之第273题整数转换英文表示

题目: 题解: var (singles []string{"", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"}teens []string{&…

IEC61850 协议解读

1. IEC61850 协议介绍 IEC 61850 是定义 变电站 自动化系统 中 设备 及设备之间相互交互的 国际标准。 给出英文定义:IEC 61850 is the international standard for defining devices within substation automation systems and how they interact with one anoth…