目录

  • 1. 压力测试的概念\定义
  • 2. AB的起源
  • 3. 运行平台区分(Windows\Linux|Mac)
  • 4. 你的第一个AB GET请求脚本
  • 5. AB发起POST、PUT请求
  • 6. AB附带有趣的参数(AB的细节) 
    • 6.1、客户要求,一个页面在 1秒 内完成 10 个用户的 10次 并发请求,也就是说我们的命令是:
    • 6.2、AB如果输出详细的测试信息:
    • 6.3、AB如果插入Cookies 和 Header:
    • 6.4、AB请求带proxy:port
  • 7. AB参数中文翻译:

回到顶部

1. 压力测试的概念\定义

1、这段话是给刚接触\学习性能测试知识的初学者,在实际工作中都会接触到性能测试压力测试负载测试等专业名词也容易混淆,下面带大家熟悉下这到底是怎么定义:
1.1、性能测试【 Performance Test 】:是指通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试;
1.2、压力测试【 stress testing 】:是指通过测试系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试;
1.3、负载测试【 Load Test 】:是指通过测试系统在资源超负荷情况下的表现,才以发现设计上的错误或验证系统的负载能力。
你们学习到更多的性能测试知识,会有更多的专业名词待你掌握,这篇文章只带大家熟悉 AB 压力测试工具,想知道 Loadrunner、Jmeter 等高级性能测试工具请关注我的Github给我提Issues,或下方留言
本章教程只授权本作者写在:https://www.cnblogs.com/BenLam/p/9263927.html ,他人盗用必究

回到顶部

2. AB的起源

  AB 全称【ApacheBench】是 Apache 自带的一款功能强大的测试工具,可以快速测试基于 HTTP 协议所有 Web 页面的最大负载压力,扩展性非常强,

下载地址:https://www.apachelounge.com/download/

下载相应系统的zip包,这里我演示的是 https://www.apachelounge.com/download/VC15/binaries/httpd-2.4.33-win64-VC15.zip   ApacheBench Ver 2.3

本章教程只授权本作者写在:https://www.cnblogs.com/BenLam/p/9263927.html ,他人盗用必究

回到顶部

3. 运行平台区分(Windows\Linux|Mac)

  3.1、Windows 7、8、10运行方式

    使用 cmd/Windows PowerShell,进入 Apache 下的 bin 目录,运行 ad 工具

cd ./Apache24/bin/start ab

    shell/Windows PowerShell会打印以下信息,即表明 ab 正常工作

Usage: ab [options] [http://]hostname[:port]/path
Options are:-n requests     Number of requests to perform-c concurrency  Number of multiple requests to make at a time-t timelimit    Seconds to max. to spend on benchmarkingThis implies -n 50000-s timeout      Seconds to max. wait for each responseDefault is 30 seconds-b windowsize   Size of TCP send/receive buffer, in bytes-B address      Address to bind to when making outgoing connections-p postfile     File containing data to POST. Remember also to set -T-u putfile      File containing data to PUT. Remember also to set -T-T content-type Content-type header to use for POST/PUT data, eg.'application/x-www-form-urlencoded'Default is 'text/plain'-v verbosity    How much troubleshooting info to print-w              Print out results in HTML tables-i              Use HEAD instead of GET-x attributes   String to insert as table attributes-y attributes   String to insert as tr attributes-z attributes   String to insert as td or th attributes-C attribute    Add cookie, eg. 'Apache=1234'. (repeatable)-H attribute    Add Arbitrary header line, eg. 'Accept-Encoding: gzip'Inserted after all normal header lines. (repeatable)-A attribute    Add Basic WWW Authentication, the attributesare a colon separated username and password.-P attribute    Add Basic Proxy Authentication, the attributesare a colon separated username and password.-X proxy:port   Proxyserver and port number to use-V              Print version number and exit-k              Use HTTP KeepAlive feature-d              Do not show percentiles served table.-S              Do not show confidence estimators and warnings.-q              Do not show progress when doing more than 150 requests-l              Accept variable document length (use this for dynamic pages)-g filename     Output collected data to gnuplot format file.-e filename     Output CSV file with percentages served-r              Don't exit on socket receive errors.-m method       Method name-h              Display usage information (this message)

本章教程只授权本作者写在:https://www.cnblogs.com/BenLam/p/9263927.html ,他人盗用必究

  3.2、Linux|Mac 运行方式

    通过 shell 输入 cd /etc/httpd/bin 路径,运行 ad 工具

cd /etc/httpd/bin
start ab

回到顶部

4. 你的第一个AB GET请求脚本

  在 cmd/shell 中输入以下两条命令:

ab -n 10 -c 10 http://127.0.0.1/
# -n 总共10次请求# -c 是 concurrency ,模拟10个并发用户,即发起10个并发请求ab -t 10 -c 10 http://127.0.0.1/
# -t 是 timelimit 执行测试的时间,单位是秒# -c 是 concurrency ,模拟10个并发用户,即发起10个并发请求

######## 命令说明:# 通过 ab 工具模拟用户浏览器行为,Get请求cnblogs网站并返回参数告诉ab你有没有访问我# ab 的刨坑: 千万别再URL上缺少 http:// ,否者无法发起请求

  结果分析:

root~/># ab -t 10 -c 10 http://127.0.0.1/

This is ApacheBench, Version 2.3 <$Revision: 1826891 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://127.0.0.1/
Licensed to The Apache Software Foundation, http://www.apache.org/


# ------ 上边的不重要 ------
#

Benchmarking 127.0.0.1 (be patient)
Finished 311 requests
# 一共发了 311 个请求Server Software:
Server Hostname:        127.0.0.1
Server Port:            80
# 描述你测试 URL 和端口号通常是 80 端口
Document Path:          /
Document Length:        147 bytes# 描述你请求的页面的相关信息,页面大小为 147 字节

#----------
# 从这开始是 ab 的重点
#Concurrency Level: 10

# 并发请求数量为:10
Time taken for tests:   10.179 seconds# 整个测试耗费 10.179 秒
Complete requests:      311# 完成请求数有311次
Failed requests:        0# 失败请求数量
Non-2xx responses:      311# HTTP Code 不是2xx的
Total transferred:      118907 bytes# 整个测试场景中产生的网络传输总量
HTML transferred:       45717 bytes# 整个测试场景中 HTML 内容传输量
Requests per second:    30.55 [#/sec] (mean)# 每秒的请求平均数,这是重要指标之一
Time per request:       327.299 [ms] (mean)# 每个请求的平均时间,这是重要指标之一
Time per request:       32.730 [ms] (mean, across all concurrent requests)# 服务器处理请求的平均时间,这是重要指标之一
Transfer rate:          11.41 [Kbytes/sec] received# 网络平均转移率

Connection Times (ms)min  mean[+/-sd] median   max
Connect:       16   31  10.0     31      94
Processing:   235  284  55.1    265     655
Waiting:       31  189  82.3    203     655
Total:        266  315  58.7    296     686Percentage of the requests served within a certain time (ms)50%    29666%    30075%    31280%    31290%    34495%    36098%    57799%    640100%    686 (longest request)

本章教程只授权本作者写在:https://www.cnblogs.com/BenLam/p/9263927.html ,他人盗用必究

回到顶部

5. AB发起POST、PUT请求

  AB的POST请求需要在当前路径下创建个空的notepad文档,命名为【Postdata.txt】,这里演示模拟login操作

【Postdata.txt】内容如下填写:

user_name=root&password=123# 说明:# user_name 是服务器约定好的字段,解释:有个用户叫:root 名# password 是服务器约定好的字段,解释:有个root的用户密码是:123

# 填写完成后直接保存

ab用到的参数解释(为什么要用这些参数才能完成POST请求)

-p 是参数文档路径<path>
-T 是content-type,解释:这个一般指定POST\PUT请求头,例如:此次我们提交的是表单【application/x-www-form-urlencoded】
post 表单格式为:application/x-www-form-urlencoded

一般用 -p 参数都会带上 -T 指定请求头

组合成命令是:

ab -n 1 -c 1 -p /home/postdata.txt -T application/x-www-form-urlencoded "http://127.0.0.1/login"

参数细节:-p 我放在文件路径是/home/postdata.txt 中-T 上边我们讲了这次我们做提交表单的操作所以必须是 application/x-www-form-urlencoded ,如果不带这个参数,服务器有可能会拒绝我们的请求后边就是我们请求的URL了

当我们要修改的时候可以提出下边的参数:
ab -n 1 -c 1 -u /home/postdata.txt -T application/x-www-form-urlencoded "http://127.0.0.1/login"

此时的 -p 就替换成 -u 就可以完成Put 请求了

回到顶部

6. AB附带有趣的参数(AB的细节)

6.1、客户要求,一个页面在 1秒 内完成 10 个用户的 10次 并发请求,也就是说我们的命令是:

ab -n 10 -c 10 <Test URL>

# 怎么才能更直观的 1秒 内完成所有请求# ↓  ↓  ↓  ↓  ↓# 通过 -s 参数来执行

-s 参数解释:我发起测试请求时计算计算,如果你不写这个参数,请求超时时间是30秒

我们来完成客户要求我们做的测试:

command:# ab -n 10 -c 10 -s 0.001  <Test URL># 如果在1秒内能通过测试,就返回正常的测试数据# 如果不能通过测试,会返回下边的提示:

This is ApacheBench, Version 2.3 <$Revision: 1826891 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)...apr_pollset_poll: The timeout specified has expired (70007)

# 意思是: apr_pollset_poll(指定的超时已过期)

6.2、AB如果输出详细的测试信息:

# ab 输出HTML测试报告

在 ab 中加上 -w 参数,即可打印出HTML测试报告

ab的测试报告截图:

6.3、AB如果插入Cookies 和 Header:

通过 ab 参数:-C 和 -H 两个参数实现-C 即是 Cookies的第一个大写字母,意思:就是添加cookies-H 即是 Header的第一个大写字母,意思:就是添加请求头信息

用法:

# ab -n 1 -c 1 -H '_name=_value' -C 'cookie1_name=cookie1_value'  <Test URL>

# 这样就可以实现带表头、缓存的请求了

本章教程只授权本作者写在:https://www.cnblogs.com/BenLam/p/9263927.html ,他人盗用必究

6.4、AB请求带proxy:port

ab -n 1  -c 1 -X 8080 <Test URL>

本章教程只授权本作者写在:https://www.cnblogs.com/BenLam/p/9263927.html ,他人盗用必究

回到顶部

7. AB参数中文翻译:

ab参数翻译如下:

-n 即requests,用于指定压力测试/总请求数。
-c 即concurrency,用于指定压力测试的并发数。
-t 即timelimit,测试执行最大秒数,它可以让测试限制在一个固定的总时间以内,默认值为50000。
-s 即timeout,请求最大等待时长,默认30s
-b 即windowsize,TCP发送/接收的缓冲大小(单位:字节)。
-p 即postfile,发送POST请求时需要上传的文件,文件格式如"p1=1&p2=2"。使用方法是 -p 123.txt 。 (配合-T)
-u 即putfile,发送PUT请求时需要上传的文件。(配合-T)
-T 即content-type,用于设置Content-Type请求头信息,如 -T "application/x-www-form-urlencoded”,默认值为text/plain。(配合-p)
-v 即verbosity,设置显示信息的详细程度 – 4或更大值会显示头信息, 3或更大值可以显示响应代码(404, 200等), 2或更大值可以显示警告和其他信息。
-w 以HTML表格形式打印结果。
-i 使用HEAD请求代替GET请求。
-x 插入字符串作为table标签的属性。
-y 插入字符串作为tr标签的属性。
-z 插入字符串作为td标签的属性。
-C 添加cookie信息,例如:"Apache=1234"。此参数可以重复,用逗号分割。提示:可以借助session实现原理传递 JSESSIONID参数, 实现保持会话的功能,如-C "c1=1234,c2=2,c3=3, JSESSIONID=FF056CD16DA9D71CB131C1D56F0319F8"。
-H 添加任意的请求头,例如:"Accept-Encoding: gzip",请求头将会添加在现有的多个请求头之后(可以重复该参数选项以添加多个)。
-A 添加一个基本的网络认证信息,用户名和密码之间用英文冒号隔开。
-P 添加一个基本的代理认证信息,用户名和密码之间用英文冒号隔开。如-P proxy-auth-username:password
-X 指定使用的代理服务器和端口号,例如:"126.10.10.3:88"。
-V 显示版本号并退出。
-k 使用HTTP的KeepAlive特性。
-d 不显示百分比。
-S 不显示预估和警告信息。
-q 超过150个请求后不显示进度
-l 接受可变文档长度(用于动态页面)
-g filename 输出结果信息到gnuplot格式的文件中。
-e filename 输出结果信息到CSV格式的文件中。
-r 指定接收到错误信息时不退出程序。
-m method 方法名
-h 帮助

原文在:https://www.cnblogs.com/BenLam/p/9263927.html ,他人勿盗用

转载于:https://www.cnblogs.com/yaoyao9446/p/9374397.html

Web性能测试篇:AB 压力测试相关推荐

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

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

  2. Apache ab压力测试说明

    转自: http://leepiao.blog.163.com/blog/static/485031302010234352282/ 压力测试是一种基本的质量保证行为,它是每个重要软件测试工 作的一部 ...

  3. 运维之道 | apachebench ab压力测试工具

    apachebench ab压力测试工具 一.ab的原理 ab是apachebench命令的缩写 ab的原理:ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问.它的测试目标是 ...

  4. Apache网页深入优化之ab压力测试、工作模式与目录属性优化

    ab压力测试工具 Apache自带压力测试工具ab,简单易用,且可以模拟各种条件对Web服务器发起测试请求.ab工具可以直接在Web服务器本地发起测试请求,这对于需要了解服务器的处理性能至关重要,因为 ...

  5. Web 应用性能和压力测试工具 Gor

    Web 应用性能和压力测试工具 Gor 常见的 Web 应用的压力测试工具 Web 应用压力测试工具有很多,比如 Apache ab,node-ab,Apache JMeter, LoadRunner ...

  6. Apache ab压力测试工具

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

  7. apache ab压力测试报错apr_socket_recv

    apache ab压力测试报错(apr_socket_recv: Connection reset by peer (104)) apache 自带的ab工具测试,当并发量达到1000多的时候报错如下 ...

  8. Apache AB 压力测试

    2019独角兽企业重金招聘Python工程师标准>>> Apache AB 压力测试  安装 // 安装工具 yum install httpd-tools 使用 // URL 是网 ...

  9. linux下安装ab压力测试工具及ab命令详解

    yum -y install httpd-tools ab -v 查看ab版本 ab --help ab -n1000 -c 10 http://www.buruyouni.com/ http://w ...

最新文章

  1. 用DataBindings属性绑定控件的值
  2. 【linux系统】IK分词器安装
  3. 新手学习DaVinci笔记一:查找资料篇
  4. linux设置esp8266默认网卡,ESP8266 Linux开发环境搭建
  5. 求1~n的全排列组合
  6. PHP从零开始--基础篇
  7. 屏蔽非法路由,好好上网!
  8. 【大数据新手上路】“零基础”系列课程--MySQL 数据整库迁移到 MaxCompute
  9. day11_界面闪烁处理
  10. 复合调味品崛起,海天还会是YYDS吗?
  11. 【Python教程】十三、我连对象都找不到还让我用对象?类与对象(一)
  12. css——font 样式和对照表 颜色格式和颜色渐变
  13. 娱乐_3D相册(HTML)_七夕
  14. 淘宝购物车计算总价格
  15. 一些概率论所揭示的道理
  16. golang map的遍历
  17. c语言有趣代码,分享一段有趣的小代码
  18. 京东发布“厂直优品”计划 目标为超10万家制造企业搭建零售系统
  19. 数据结构 第一章 数据结构绪论
  20. Ubuntu :20.04 上安装 gcc/g++7.5

热门文章

  1. c语言c99标准_从年薪10万到年薪30万,C语言程序员必读的5本书
  2. dart 语言中的列表(List)
  3. Danfo.js专题 - Series对象
  4. javac 命令的作用_机加工行业MES系统在生产调度中的重要作用
  5. python与txt文件查找,在Python中搜索TXT文件
  6. 判断mos管好坏_想要保护电动车控制器,推荐这款STP75NF75高压MOS管
  7. Spark读写HBase(主要讲解SHC的使用)
  8. java 标识变量_Java变量与数据类型之一:Java编程规范,关键字与标识符
  9. [Hive] Hive表压缩
  10. LR录制脚本后,中文显示的是乱码,怎么解决?