2019独角兽企业重金招聘Python工程师标准>>>

ab的全称是ApacheBench,是 Apache 附带的一个小工具,专门用于 HTTP Server 的benchmark testing,可以同时模拟多个并发请求。前段时间看到公司的开发人员也在用它作一些测试,看起来也不错,很简单,也很容易使用,所以今天花一点时间看了一下。

通过下面的一个简单的例子和注释,相信大家可以更容易理解这个工具的使用。
进入apache的bin目录

缺点:一次只能测试一条URL

/*在这个例子的一开始,我执行了这样一个命令 ab -n 10 -c 10 http://www.google.com/这个命令的意思是启动 ab ,向 www.google.com 发送10个请求(-n 10) ,并每次发送10个请求(-c 10)——也就是说一次都发过去了。跟着下面的是 ab 输出的测试报告,红色部分是我添加的注释。*/

C:\Program Files\Apache Software Foundation\Apache2.2\bin>ab -n 10 -c 10 http

://www.google.com/

This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0

Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/

Copyright 1997-2005 The Apache Software Foundation, http://www.apache.org/

Benchmarking www.google.com (be patient).....done

Server Software:        GWS/2.1

Server Hostname:        www.google.com

Server Port:            80

Document Path:          /

Document Length:        230 bytes

Concurrency Level:      10

/*整个测试持续的时间*/

Time taken for tests:   3.234651 seconds

/*完成的请求数量*/

Complete requests:      10

/*失败的请求数量*/

Failed requests:        0

Write errors:           0

Non-2xx responses:      10

Keep-Alive requests:    10

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

Total transferred:      6020 bytes

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

HTML transferred:       2300 bytes

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

Requests per second:    3.09 [#/sec] (mean)

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

Time per request:       3234.651 [ms] (mean)

/*这个还不知道是什么意思,有知道的朋友请留言,谢谢 ^_^ */

Time per request:       323.465 [ms] (mean, across all concurrent requests)

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

Transfer rate:          1.55 [Kbytes/sec] received

/*网络上消耗的时间的分解,各项数据的具体算法还不是很清楚*/

Connection Times (ms)

min  mean[+/-sd] median   max

Connect:       20  318 926.1     30    2954

Processing:    40 2160 1462.0   3034    3154

Waiting:       40 2160 1462.0   3034    3154

Total:         60 2479 1276.4   3064    3184

/*下面的内容为整个场景中所有请求的响应情况。在场景中每个请求都有一个响应时间,其中 50% 的用户响应时间小于 3064 毫秒,60 % 的用户响应时间小于 3094 毫秒,最大的响应时间小于 3184 毫秒*/

Percentage of the requests served within a certain time (ms)

50%   3064

66%   3094

75%   3124

80%   3154

90%   3184

95%   3184

98%   3184

99%   3184

100%   3184 (longest request)

ab [ -A auth-username ] [ -c concurrency ] [ -C cookie-name=value ] [ -d ] [ -e csv-file ] [ -g gnuplot-file ] [ -h ] [ -H custom-header ] [ -i ] [ -k ] [ -n requests ] [ -p POST-file ] [ -P proxy-auth-username ] [ -q ] [ -s ] [ -S ] [ -t timelimit ] [ -T content-type ] [ -v verbosity] [ -V ] [ -w ] [ -x <table>-attributes ] [ -X proxy[] ] [ -y <tr>-attributes ] [ -z <td>-attributes ] [http://]hostname[:port]/path

选项

-A auth-username:password
对服务器提供BASIC认证信任。 用户名和密码由一个:隔开,并以base64编码形式发送。 无论服务器是否需要(即, 是否发送了401认证需求代码),此字符串都会被发送。
-c concurrency
一次产生的请求个数。默认是一次一个。
-C cookie-name=value
对请求附加一个Cookie:行。 其典型形式是name=value的一个参数对。 此参数可以重复。
-d
不显示"percentage served within XX [ms] table"的消息(为以前的版本提供支持)。
-e csv-file
产生一个以逗号分隔的(CSV)文件, 其中包含了处理每个相应百分比的请求所需要(从1%到100%)的相应百分比的(以微妙为单位)时间。 由于这种格式已经“二进制化”,所以比'gnuplot'格式更有用。
-g gnuplot-file
把所有测试结果写入一个'gnuplot'或者TSV (以Tab分隔的)文件。 此文件可以方便地导入到Gnuplot, IDL, Mathematica, Igor甚至Excel中。 其中的第一行为标题。
-h
显示使用方法。
-H custom-header
对请求附加额外的头信息。 此参数的典型形式是一个有效的头信息行,其中包含了以冒号分隔的字段和值的对 (如, "Accept-Encoding: zip/zop;8bit").
-i
执行HEAD请求,而不是GET。
-k
启用HTTP KeepAlive功能,即, 在一个HTTP会话中执行多个请求。 默认时,不启用KeepAlive功能.
-n requests
在测试会话中所执行的请求个数。 默认时,仅执行一个请求,但通常其结果不具有代表意义。
-p POST-file
包含了需要POST的数据的文件.
-P proxy-auth-username:password
对一个中转代理提供BASIC认证信任。 用户名和密码由一个:隔开,并以base64编码形式发送。 无论服务器是否需要(即, 是否发送了401认证需求代码),此字符串都会被发送。
-q
如果处理的请求数大于150, ab每处理大约10%或者100个请求时,会在stderr输出一个进度计数。 此-q标记可以抑制这些信息。
-s
用于编译中(ab -h会显示相关信息)使用了SSL的受保护的https, 而不是http协议的时候。此功能是实验性的,也是很简陋的。最好不要用。
-S
不显示中值和标准背离值, 而且在均值和中值为标准背离值的1到2倍时,也不显示警告或出错信息。 默认时,会显示 最小值/均值/最大值等数值。(为以前的版本提供支持).
-t timelimit
测试所进行的最大秒数。其内部隐含值是-n 50000。 它可以使对服务器的测试限制在一个固定的总时间以内。默认时,没有时间限制。
-T content-type
POST数据所使用的Content-type头信息。
-v verbosity
设置显示信息的详细程度 - 4或更大值会显示头信息, 3或更大值可以显示响应代码(404, 200等), 2或更大值可以显示警告和其他信息。
-V
显示版本号并退出。
-w
以HTML表的格式输出结果。默认时,它是白色背景的两列宽度的一张表。
-x <table>-attributes
设置<table>属性的字符串。 此属性被填入<table 这里 >.
-X proxy[:port]
对请求使用代理服务器。
-y <tr>-attributes
设置<tr>属性的字符串.
-z <td>-attributes
设置<td>属性的字符串.

转载于:https://my.oschina.net/shunshun/blog/61530

基准测试 ApacheBench ab学习相关推荐

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

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

  2. ab压力测试_CentOS安装压力测试工具ApacheBench(ab)

    官方文档: https://httpd.apache.org/docs/2.4/programs/ab.html ab原理: ab命令会创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访 ...

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

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

  4. apachebench ab.exe压力测试

    今天使用ab.exe做压力测试,由于页面只接收POST数据,遂上网找了相关资料,GET的一堆,POST的了了无几,而且都是抄来抄去,下面给出正确的POST请求参数信息 ab版本:2.3 E:\> ...

  5. unity3d 自动变化大小_【Unity游戏开发】AB学习(三)--加载AB和实例化操作对应的内存变化...

    了解一下加载AB和实例化操作对应的内存变化,有助于我们更好的理解内存管理 很经典的对称造型,用多少释放多少. 这是各阶段的内存和其他数据变化 说明: 初始状态 AssetBundle.Load文件后 ...

  6. 【Go语言】Go语言我们应该这样学~全网较全的学习教程

    哈喽,我是一个初级的互联网玩家,致力于分享各领域优质开源项目. 这是一篇可以让你受益终身的 Go 精华文章,汇聚了圣经级 500 + Go开源项目的精华,Go 开源电子书.Go学习路线图! 建议你花 ...

  7. 如何测试web服务器性能,如何执行Web服务器性能基准测试?

    本文概述 你知道你网站的平均响应时间吗?你知道你的网站可以处理多少个并发用户吗? 负载测试对于Web应用程序了解网站容量至关重要.如果要选择Web服务器, 那么要做的第一件事就是执行负载测试, 然后看 ...

  8. Apache ab 压力测试工具

    Apache Bin目录下的 ab.exe(ApacheBench) 程序是专门用在做压力测试用的软件. ApacheBench(ab) 用来测试 apache 执行效率,专门用来执行网站服务器的运行 ...

  9. nginx学习--nginx下的gzip与vary、预压缩、缓存、反向代理的结合

    2019独角兽企业重金招聘Python工程师标准>>> 来自:nginx系列(十七)nginx下的gzip与vary.预压缩.缓存.反向代理的结合 介绍 在http的协议里,为了减少 ...

最新文章

  1. Mysql select into outfile NULL值导出的处理方法
  2. 《Effective Debugging:软件和系统调试的66个有效方法》一第2条:在网上确切地查询你所遇到的问题,以寻求解决问题的灵感...
  3. Mac电脑上java如何手动释放内存?
  4. 微软MDT 安装与配置(二)
  5. 金融大数据风控建模实战(一)智能风控背景
  6. 定时获取AccessToken——萤石开放平台
  7. ensp中输入interface GigabitEthernet0/0/0提示Wrong parameter found at ‘^‘ position
  8. 【概率论】高斯分布、中心极限定理、伯努利分布、二项分布
  9. 真的来了!IO-Link无线-释放传感器/执行器巨大潜力的工业无线解决方案,设备远程监控新选择!(Part 3)
  10. CSS3——渐变(线性渐变、径向渐变、重复性渐变)
  11. FX110网:鳄鱼线(Alligator)指标的操作应用
  12. python报错就一定是有错吗_Python-什么是错误的幻数错误?
  13. UE_材质_UV计算相关
  14. javascript 代码中的use strict是什么意思
  15. matlab作时间轴有关的图
  16. 英飞凌基础学习笔记(GTM)Generic Timer Module
  17. 中软国际首届嘉年华晚会 创新网络年会PK“春晚”
  18. 智慧路灯杆建设完成后的运营内容及运营方式有哪些?
  19. Mac 远程登陆阿里云服务器
  20. 总结如何提升网站流量之方法

热门文章

  1. Python中字符串操作函数string.split('str1')和string.join(ls)
  2. 发现一个小坑的地方,unity的协程,想要停止,必须以字符串启动
  3. [BZOJ1880] [Sdoi2009] Elaxia的路线 (SPFA 拓扑排序)
  4. java File类 打印目录树状结构(递归)
  5. JavaWeb -- Session实例 -- 自动登录 和 防止表单重复提交(令牌产生器) MD5码
  6. .NET平台下WEB应用程序的部署(安装数据库和自动配置)
  7. Chapter 4 : 单行函数
  8. Establishing SSL connection without server's identity verification is not recommended.
  9. Android 动态设置 layout_centerInParent
  10. SSD硬盘 全盘安全擦除