开发工具-压力测试工具 ab

article/2025/9/12 14:41:53

开发工具-压力测试工具 ab

  • 写在前面
  • ab工具简介
  • 下载 ab
  • 使用 ab
  • 测试结果
    • 报告信息解读
  • 关于 post 请求的压力测试
  • 关于需要登录的测试
  • 关于报错

写在前面


在学习ab工具之前,我们需了解几个关于压力测试的概念
  1. 吞吐率(Requests per second)
    概念:服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。
    计算公式:总请求数 / 处理完成这些请求数所花费的时间,即
    Request per second = Complete requests / Time taken for tests
  2. 并发连接数(The number of concurrent connections)
    概念:某个时刻服务器所接受的请求数目,简单的讲,就是一个会话。
  3. 并发用户数(The number of concurrent users,Concurrency Level)
    概念:要注意区分这个概念和并发连接数之间的区别,一个用户可能同时会产生多个会话,也即连接数。
  4. 用户平均请求等待时间(Time per request)
    计算公式:处理完成所有请求数所花费的时间/ (总请求数 / 并发用户数),即
    Time per request = Time taken for tests /( Complete requests / Concurrency Level)
  5. 服务器平均请求等待时间(Time per request: across all concurrent requests)
    计算公式:处理完成所有请求数所花费的时间 / 总请求数,即
    Time taken for / testsComplete requests
    可以看到,它是吞吐率的倒数。
    同时,它也=用户平均请求等待时间/并发用户数,即
    Time per request / Concurrency Level

ab工具简介


ab全称为:apache bench
  • 在官网上的解释如下:

ab是Apache超文本传输协议(HTTP)的性能测试工具。其设计意图是描绘当前所安装的Apache的执行性能,主要是显示你安装的Apache每秒可以处理多少个请求。

  • 其他网站解释:

ab是apache自带的压力测试工具。ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如nginx、tomcat、IIS等。

下载 ab


可以在 apache 的官网下载,ab 是 apache 的一部分

apache 官网

下载点这里
在这里插入图片描述
windows 版在这里
在这里插入图片描述
然后这个
在这里插入图片描述
接下来选择使用的运行库版本及 SLL 版本等。如果只使用 ab 可以随便选个。
在这里插入图片描述
下载后的压缩包内 bin 文件夹下的 ab.exe 就是测试工具了。

使用 ab

可以在命令行界面使用 ab 测试工具

ab的用法是:
ab [options] [http/https]hostname[:port]/path
例如:ab -n 5000 -c 200 [http/https]hostname[:port]/index.php
上例表示总共访问index.php这个脚本5000次,200并发同时执行。
ab常用参数的介绍:
-n : 总共的请求执行数,缺省是1;
-c : 并发数,缺省是1;
-t : 测试所进行的总时间,秒为单位,缺省50000s
-p : POST时的数据文件
-w : 以HTML表的格式输出结果
-T : POST/PUT 请求时的 content-type
-C : 添加 cookie,例如 ‘Apache=1234’
-H : 设置头部信息,以键值对形式

例如

ab -n 1000 -c 100 -w [http/https]hostname[:port]/index.php >>d:report.html

测试结果

执行完测试,会输出结果,如果使用了 -w 并指定报错的 html 文件,则可以从此文件查看结果报告
在这里插入图片描述

报告信息解读

首先是服务器及访问信息

  • Server Software : 服务器软件
  • Server Hostname : 服务器主机名称
  • Server Port : 服务器端口
  • Document Path : 访问文档路径
  • Document Length : 访问文档的大小(响应正文长度)
    在这里插入图片描述
    然后是测试信息
  • Concurrency Level : 并发请求数
  • Time taken for tests : 测试耗时
  • Complete requests : 完成请求数
  • Failed requests : 失败的请求数
  • Total reansferred : 整个场景中的网络传输量
  • HTML transferred : 整个场景中 HTML 内容传输量
  • Requests per second : 每秒请求数量(吞吐率)
  • Transfer rate : 每秒接收到的网络流量
    在这里插入图片描述
    有时候(例如直接显示测试结果)还有两个比较常用的信息
  • Time per request (mean) : 用户平均请求等待时间
  • Time per request (mean, across all concurrent requests) : 服务器平均请求处理时间
    在这里插入图片描述
    还有网络消耗时间分解
    在这里插入图片描述
    请求处理时间的情况分解
    在这里插入图片描述

关于 post 请求的压力测试

ab -n 1000 -c 100 -p “post.txt” -T “application/x-www-form-urlencode” -w http://127.0.0.1:5000/api >> d:report.com
文本存放的是post请求所需参数

关于需要登录的测试

登录后会在 cookie 里有登录信息,例如 token 等。

使用参数添加 cookie,格式为 key=value

ab -n 100 -c 10 -C key=value http://test.com/

或者使用参数添加头部信息,添加 cookie

ab -n 100 -c 10 -H “Cookie: key1=value1; key2=value2” http://test.com/

关于报错

网上查的资料上说,有时会报错

apr_socket_recv: Connection reset by peer (104) : 用 apache 自带的ab工具测试,当并发量比较多的时候比如超过1000并发会报上述的错误。查看应用服务器和数据库均未报错,连接被重置,Google了一下,apr_socket_recv这个是操作系统内核的一个参数,在高并发的情况下,内核会认为系统受到了SYN flood攻击,会发送cookies(possible SYN flooding on port 80. Sending cookies),这样会减慢影响请求的速度,所以在应用服务器上设置下这个参数为0禁用系统保护就可以进行大并发测试了。另附一些其他设置

#此参数是为了防止洪水攻击的,但对于大并发系统,要禁用此设置
net.ipv4.tcp_syncookies = 0  
#参数决定了SYN_RECV状态队列的数量,一般默认值为512或者1024,即超过这个数量,系统将不再接受新的TCP连接请求,一定程度上可以防止系统资源耗尽。可根据情况增加该值以接受更多的连接请求。
net.ipv4.tcp_max_syn_backlog
#参数决定是否加速TIME_WAIT的sockets的回收,默认为0。
net.ipv4.tcp_tw_recycle
#参数决定是否可将TIME_WAIT状态的sockets用于新的TCP连接,默认为0。
net.ipv4.tcp_tw_reuse
#参数决定TIME_WAIT状态的sockets总数量,可根据连接数和系统资源需要进行设置。 
net.ipv4.tcp_max_tw_buckets

http://chatgpt.dhexx.cn/article/45JBE9aG.shtml

相关文章

【转】十大抢手的网站压力测试工具

两天,jnj在本站发布了《 如何在低速率网络中测试 Web 应用 》,那是测试网络不好的情况。而下面是十个免费的可以用来进行Web的负载/压力测试的工具,这样,你就可以知道你的服务器以及你的WEB应用能够顶得住多少的并发量&#xff…

windows环境压力测试工具Apache ab安装及使用(apache benchmark)

1.首先下载并解压安装包,下载地址Apache Haus Downloads 2.解压到C盘,并进入bin目录,复制路径,并配置环境变量,保存后就OK了 3.可以开始使用了,测试一下吧 ab -n 2000 -c 10 -k http://localhost:6868/dataScreenLibrary/findPublicShareByPk?id4 常用参数详解: …

Jmeter--压力测试工具

前言:Jmeter是一款抗压测试工具,具体是干嘛用的相信在来到这的小伙伴都对它有了一些基本的了解,这里就不做过多的赘述了,本文主要是记录一下Jmeter的下载使用过程是怎么样的~ 一、下载 官网地址:Apache JMeter - Dow…

JMeter压力测试工具

1 简介 JMeter是开源软件Apache基金会下的一个性能测试工具,用来测试部署在服务器端的应用程序的性能。 2 下载安装和启动 JMeter可以在JMeter的官方网站下载(https://jmeter.apache.org/) 官网找到Download 下载zip压缩包后, 解压到本地就行 进入/bin目录, 运…

简单好用的网站压力测试工具

简单好用的网站压力测试工具 下载:https://files.cnblogs.com/files/wordblog/%E5%8E%8B%E5%8A%9B%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7.rar

网站压测工具Apache-ab,webbench,Apache-Jemeter

网站压测工具Apache-ab,webbench,Apache-Jemeter 1、搭建测试网站2、Apache自带工具ab3、webbench4、Windows下安装Apache-Jmeter 1、搭建测试网站 编译LAMP网站部署:LAMP web1配置: yum方式搭建网站 初始化 cd /etc/yum.repos.…

10大主流压力测试工具推荐

在移动应用和Web服务正式发布之前,除了进行必要的功能测试和安全测试,为了保证互联网产品的服务交付质量,往往还需要做压力/负载/性能测试。然而很多传统企业在试水互联网的过程中,往往由于资源或产品迭代速度等原因忽视了这一块工…

Linux中Makefile详细教程

目录 Makefile Makefile的介绍 Makefile简单的编写 .PHONY 问题: 如果只执行make,它执行的是Makefile里哪一段语句呢? 怎么知道我的可执行程序是最新的呢? Makefile编译多个文件 进度条小程序 Makefile Makefile的介绍 …

Makefile入门教程

转载&#xff1a; https://www.linuxidc.com/Linux/2014-08/105304.htm Makefile入门教程 回顾 首先&#xff0c;我把需要的文件全部写出来&#xff08;在《GCC学习笔记》处&#xff09;。 main.c文件 #include <stdio.h> #include "math.h" int main() { int…

Makefile教程(入门介绍)

文章目录 前言一、Makefile介绍二、make和Makefile的关系三、学习makefile的意义四、编写一个简单的Makefile总结 前言 本篇文章将带大家学习Makefile&#xff0c;Makefile在文件的编译中起到重要作用&#xff0c;在Linux中我们也是经常使用到Makefile&#xff0c;下面我将会带…

VCS使用Makefile教程

在从事IC验证工作的过程中&#xff0c;其实最开始的一步不是写什么test plan或者说verification of structure&#xff0c;而是应该知道makefile怎么写&#xff0c;先写出一个通用&#xff0c;基础的编译仿真脚本&#xff0c;可能会让你编译仿真轻松一点。 这份Makefile使用教程…

Makefile教程(Makefile的结构)

文章目录 前言一、Makefile的结构二、深入案例三、Makefile中的一些技巧总结 前言 一、Makefile的结构 Makefile 通常由一系列规则组成&#xff0c;每条规则定义了如何从源文件生成目标文件。每个规则又由目标、依赖和命令三部分组成。 下面是 Makefile 规则的基本结构&…

linux初试gcc makefile菜鸟教程

linux初试gcc makefile菜鸟教程 1.实验环境 1.ubuntu16(安装教程) 2.gcc (gcc安装&#xff1a;apt install gcc) 3.make (make安装 apt install make) 用C举个小例子 2.源码 main.c /*************************************************************************> File N…

Makefile使用教程

目录 一、前言 二、VCS的常用命令参数 2.1. 一步法 2.2. 两步法 2.3. 三步法 三、常见错误 四、参考资料 一、前言 以Makefile启动VCS为例来讲解如何使用命令参数&#xff0c;VCS编译文件会引入过多参数&#xff0c;试想如果我们每次都需要终端中敲击过多参数才能运行一…

Makefile详细教程

Makefile详细教程 我编写本指南是因为我永远无法完全理解 Makefile。 他们似乎充斥着隐藏的规则和深奥的符号&#xff0c;提出简单的问题并没有得到简单的答案。 为了解决这个问题&#xff0c;我花了几个周末的时间坐下来阅读所有关于 Makefile 的内容。 我已将最关键的知识浓…

最实用的Makefile教程 真的很简单(搞不明白网上的教程写那么复杂干嘛)

前言 其实我的要求不高&#xff0c;我就是想要写个Makefile&#xff0c;把我那些需要反复编译的文件处理一下就可以了&#xff0c;所以我当时就拼命地在网上找关于Makefile的教程&#xff0c;结果看到的教程都是啰里啰嗦一大堆&#xff0c;看得我云里雾里。 大家要知道&#…

Makefile的入门完整教程(包学包会)

Makefile的完整入门教程&#xff08;实现不了来打我TAT&#xff09; 看完能够了解Makefile是什么&#xff1b;我们能用makefile做什么&#xff1b;makefile的简易使用 1、什么是Makefile Makefile 可以简单的认为是一个工程文件的编译规则&#xff0c;描述了整个工程的编译和…

Linux makefile 教程 非常详细,且易懂

最近在学习Linux下的C编程&#xff0c;买了一本叫《Linux环境下的C编程指南》读到makefile就越看越迷糊&#xff0c;可能是我的理解能不行。 于是google到了以下这篇文章。通俗易懂。然后把它贴出来&#xff0c;方便学习。 后记&#xff0c;看完发现这篇文章和《Linux环境下的C…

Makefile基础教程

前期准备 在真正使用Makefile之前&#xff0c;我们首先先写四个c文件和相应的h文件&#xff0c;分别是fun0.c,fun1.c,fun2.c,fun0.h,fun1.h,fun2.h以及main.c //fun0.c #include "fun0.h" void print0(){printf("hello world 0"); }//fun0.h #include &l…

Makefile教程(掌握这里足够)

众所周知&#xff0c;在Linux环境下进行项目开发那就少了使用make来构建和管理自己的工程。如果想要更加深入的学习&#xff0c;我在这里推荐一本书 https://www.jianguoyun.com/p/DZWKrLIQjKL5Bxi0z5UD 访问密码&#xff1a;KvhT2v 1. makefile的命名 默认的情况下&#xff…