开发工具-压力测试工具 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

开发工具-压力测试工具 ab相关推荐

  1. 有哪些常用的压力测试工具?软件压力测试流程

    软件压力测试流程 确定测试需求 根据用户需求确定测试点,明确测试人员职责.所需工具.时间和地点. 编写测试用例 测试人员根据测试需求编写测试用例. 执行测试用例 确定操作用户数量.时间要求等;通过测试 ...

  2. ab压力测试工具linux,【Linux】ApacheBench(ab)压力测试工具

    AB的简介 ab是apachebench命令的缩写. ab是apache自带的压力测试工具.ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试.比 ...

  3. Web必备性能压力测试工具WebBench与ApcheBench(ab)详解

    在运维工作中,压力测试是一项很重要的工作.比如在一个网站上线之前,能承受多大访问量.在大访问量情况下性能怎样,这些数据指标好坏将会直接影响用户体验.但是,在压力测试中存在一个共性,那就是压力测试的结果 ...

  4. 从零开始的Nginx [ 8 ] --- nginx 的性能优化:ab接口压力测试工具,tomcat企业运维,WEB站点部署,项目上线

    文章目录 nginx 性能优化 1.当前系统结构瓶颈 2.了解业务模式 3.性能与安全 4.系统与nginx性能优化 1.文件句柄 2.设置方式 3.系统全局性修该和用户局部性修改 4.进程局部性修改 ...

  5. Linux下四款Web服务器压力测试工具(http_load、webbench、ab、siege)介绍

    一.http_load程序非常小,解压后也不到100K http_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载.但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会 ...

  6. 压力测试工具ab 及 centos下单独安装方法

    为什么80%的码农都做不了架构师?>>>    压力测试工具Ab简介 Apache安装包中自带的压力测试工具 Apache Benchmark(简称ab) 简单易用,这里就采用 ab ...

  7. 压力测试工具Ab简介

    Apache安装包中自带的压力测试工具 Apache Benchmark(简称ab) 简单易用,这里就采用 ab作为压力测试工具了. 1.独立安装 通过 yum-utils中的yumdownload  ...

  8. Web服务器性能/压力测试工具http_load、webbench、ab、Siege使用教程

    一.http_load 程序非常小,解压后也不到100K http_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载.但是它不同于大多数压力测试工 具,它可以以一个单一的进程运行,一般 ...

  9. apache ab压力测试工具-批量压测脚本

    概述 ab(Apache benchmark)是一款常用的压力测试工具.简单易用,ab的命令行一次只能支持一次测试.如果想要批量执行不同的测试方式,并自动对指标进行分析,那么单靠手工一条一条命令运行a ...

  10. Apache ab压力测试工具

    查看apache是否安装 # rpm -qa httpd httpd-2.2.3-63.el5.centos (在apache 版本2以后,apache全部改名为httpd) ab压力测试工具是apa ...

最新文章

  1. 项目三(2)——抽象类
  2. IIS的应用程序池优化方法
  3. ModuleNotFoundError: No module named ‘mmcv._ext‘
  4. iOS 仿看了吗应用、指南针测网速等常用工具、自定义弹出视图框架、图片裁剪、内容扩展等源码...
  5. 阿里巴巴集团CTO王坚:互联网、数据和计算
  6. 那些你不知道的单词小秘密
  7. 直播 | EMNLP 2020:用语义分割的思路解决不完整话语重写任务
  8. 制作FAT12软盘以查看软盘的根目录条目+文件属性+文件内容
  9. IIS网站或系统验证码不显示问题——使用了托管的处理程序,但是未安装或未完整安装 ASP.NET...
  10. 如何利用bat在同一个IE用多个选项卡的方式打开多个网址? 如何利用bat在同一个IE用多个选项卡的方式打开多个网址? 我的网址是这样的http://www.xags.gov.cn:8003/gga
  11. Lifewire文档阅读笔记-如何使用IP地址找对应的MAC地址
  12. 免费获取Silverlight Stream Service Account
  13. Docker教程小白实操入门(13)--如何使用COPY和ADD复制文件到容器内
  14. 从毫无交集到走向融合,AI+区块链才是改变世界的黑科技!
  15. DOSBox 的安装及使用 详细教程
  16. 最好的Linux文件管理器,适用于 Linux 用户的 10 款优秀且免费的文件管理器
  17. CAS:1537170-85-6_DBCO-PEG4-COOH_PEG-DBCO衍生物
  18. 获取微信视频号视频地址
  19. 已10万人集齐,支付宝集五福今日正式开始
  20. 鸿蒙桌面系统什么时候上线,鸿蒙OS全新PC桌面模式即将上线?回顾一下手机桌面系统的发展历程...

热门文章

  1. 群体智能优化算法之粒子群优化算法
  2. 微软输入法怎么最小化到托盘_Windows下的五笔输入法哪个最好用?我来推荐几款...
  3. Linux查看网卡驱动|更新驱动
  4. “几何深度学习”受爱因斯坦启示:让AI摆脱平面看到更高的维度!
  5. 163邮箱链接服务器失败是怎么回事,outlook邮箱添加163邮箱账户失败该怎么办?...
  6. 数字证书如何写入到ukey_ukey身份认证步骤
  7. python安装setup.py命令_python安装模块如何通过setup.py安装(超简单)
  8. 小区物业管理系统c语言,智能小区物业管理系统毕业论文.doc
  9. 使用Magoshare for Mac无法打开恢复的文件或扫描后找不到丢失的文件怎么办?
  10. 舆情监控系统python开源_舆情监测系统开源