一 AB背景介绍  

  Apache附带的压力测试工具apache bench--简称ab,非常容易使用,并且完全可以摸你各种条件对Web服务器发起测试请求。ab可以直接在Web服务器本地发起测试请求,这对于需要了解服务器的处理性能至关重要,因为它不包括数据的网络传输时间以及用户PC本地的计算时间

  ab is a tool for benchmarking your Apache Hypertext Transfer Protocol (HTTP) server. It is designed to give you an impression of how your current Apache installation performs. This especially shows you how many requests per second your Apache installation is capable of serving. - See more at: http://www.rickyzhu.com/129_quick-introduce-to-ab.html#sthash.SeO8xgfH.dpuf

支持的参数和参数的介绍如下:

ab [ -A auth-username:password ] [ -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:password ] [ -q ] [ -s ] [ -S ] [ -t timelimit ] [ -T content-type ] [ -v verbosity] [ -V ] [ -w ] [ -x <table>-attributes ] [ -X proxy[:port] ] [ -y <tr>-attributes ] [ -z <td>-attributes ] [http://]hostname[:port]/path

ab的参数详细解释

普通的测试,使用-c -n参数配合就可以完成任务
格式: ./ab [options] [http://]hostname[:port]/path
参数:
-n 测试的总请求数。默认时,仅执行一个请求
-c 一次并发请求个数。默认是一次一个。
-H 添加请求头,例如 ‘Accept-Encoding: gzip’,以gzip方式请求。
-t 测试所进行的最大秒数。其内部隐含值是-n 50000。它可以使对服务器的测试限制在一个固定的总时间以内。默认时,没有时间限制。
-p 包含了需要POST的数据的文件.
-T POST数据所使用的Content-type头信息。
-v 设置显示信息的详细程度 – 4或更大值会显示头信息, 3或更大值可以显示响应代码(404, 200等), 2或更大值可以显示警告和其他信息。 -V 显示版本号并退出。
-w 以HTML表的格式输出结果。默认时,它是白色背景的两列宽度的一张表。
-i 执行HEAD请求,而不是GET。
-C -C cookie-name=value 对请求附加一个Cookie:行。 其典型形式是name=value的一个参数对。此参数可以重复。

本文介绍AB的获取安装及应用实例。

二 AB的获取和安装

1 系统安装Apache,可以在/usr/bin路径下找到ab,或者whereis ab即可发现。

2 单独安装ab  http://www.netingcn.com/install-ab-without-httpd.html

ab运行需要依赖apr-util包,安装命令为:yum install apr-util

下载apache的rpm包,可以直接去官网手动下载,当然也可以使用命令yumdownloader来完成,yumdownloader是 yum-utils包下面的,如果没有安装yum-utils,则需要先安装它。因为解压apache的rpm包时会在当前目录下生成etc、var和 usr三个目录,所以建议先创建一个临时目录,命令如下:

mkdir ~/abtmp
cd ~/abtmp
yumdownloader httpd
rpm2cpio httpd-*.rpm | cpio -idmv

上述命令成功后,可以在~/abtmp下的usr/bin中看到一个名为ab的文件,复制到系统PATH下就大功告成,例如。

cp ~/abtmp/usr/bin/ab /usr/bin

可使用系统:win7  Linux 等等

三 实例

1 web的http请求,e.g.  ab -n 100 -c 5  http://baidu.com/

#-n 请求的总执行次数; -c 并发数 "http://baidu.com/" 待测url
[work@bjdhj-118-56 ~]$ ab -n 100 -c 5 http://baidu.com/
#首先是Apache的版本信息
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 2006 The Apache Software Foundation, http://www.apache.org/ Benchmarking baidu.com (be patient).....done Server Software: Apache
Server Hostname: baidu.com #请求的服务
Server Port: 80      #请求端口 Document Path: /       #
Document Length: 81 bytes   #页面长度 Concurrency Level: 5       #并发数
Time taken for tests: 0.125373 seconds  #总耗时
Complete requests: 100          #总访问次数
Failed requests: 0           #注1
Write errors: 0
Total transferred: 37600 bytes     #总共传输字节数,包含http的头信息等
HTML transferred: 8100 bytes      #html字节数,实际的页面传递字节数
Requests per second: 797.62 [#/sec] (mean)  #每秒多少请求,这个是非常重要的参数数值,服务器的吞吐量
Time per request: 6.269 [ms] (mean)     #用户平均请求等待时间
Time per request: 1.254 [ms] (mean, across all concurrent requests)  #服务器平均处理时间,也就是服务器吞吐量的倒数
Transfer rate: 287.14 [Kbytes/sec] received    #每秒获取的数据长度 Connection Times (ms)
min mean[+/-sd] median max
Connect: 1 1 0.4 1 3
Processing: 3 4 1.2 4 12
Waiting: 3 3 1.3 4 11
Total: 5 5 1.3 5 13 Percentage of the requests served within a certain time (ms)
50% 5          # 50%的请求在5ms内返回
66% 6
75% 6
80% 6
90% 6
95% 8
98% 11
99% 13
100% 13 (longest request)

四 测试过程中会出现以下这些错误

1)ab并发数不能大于请求数,会提示 :"ab: Cannot use concurrency level greater than total number of requests"

2)请求数默认不能超过1024个,会提示:"socket: Too many open files (24)"

可用ulimit -n命令修改,例如:ulimit -n 8192 (设置用户可以同时打开的最大文件数)。

3)并发数默认不能大于20000个,会提示"ab: Invalid Concurrency [Range 0..20000]"

需要修改apache源代码support目录下ab.c文件,找到:#define MAX_CONCURRENCY 20000  将宏定义的值改大,重新编译安装apache。

4)提示:"apr_socket_recv: Connection reset by peer (104)"网上说是apr-util有些问题,不太稳定,多试几次就好了。

5)问题:关于Failed Request,为什么会有失败的请求?这个数据是什么含义?是否影响rps等测试结果。

答:可检查文件长度,如下,Length*complete+http头信息≈Total,说明所有请求正确发出

Document Length:        35137 bytes

Complete requests:      100

Total transferred:      3543782 bytes

在出现Failed Request时,会给出一行要求失败的各原因的数据统计,分别代表的意义:

 Connect      无法送出要求、目标主机连接失败、要求的过程中连线被中断

 Receive      无法接收要求

 Length       回应的内容长度不一致 ( 以 Content-Length 标头值为判断依据 )

 Exception   发生无法预期的错误

当第2次以后的HTTP Request所得到的HTTP Response Header得到的Content-Length与第一次不一致,就会得到Length的错误,并不影响测试结果。

6)问题:结果得到两个response time,相差很大,这两个数据自个什么意思?

答:解释如下。

ab有一个-c n参数,就是第一行的Concurrency Level,可以让ab创建n个并发链接测试。它们关系是:Tpr1=Tpr2*n ,Tpr2=/Rps

The first value is calculated with the formula concurrency *timetaken * /done while the second value is calculated with the formula timetaken *  

前一个衡量单个请求的延迟,cpu是分时间片轮流执行请求的,多并发的情况下,一个并发上的请求时需要等待这么长时间才能得到下一个时间片,计算方法Time per request: 60.444 [ms] (mean, across all concurrent requests)*并发数。通俗点说就是当以-c 10的并发下完成-n 1000个请求的同时,额外加入一个请求,完成这个求平均需要的时间。

后一个衡量性能的标准,它反映了完成一个请求需要的平均时间,在当前的并发情况下,增加一个请求需要的时间。计算方法Time taken for tests: 60.444 seconds/Complete requests: ,通俗点说就是当以-c 10的并发下完成-n 1001个请求时,比完成-n1000个请求多花的时间。

可以适当调节-c 和-n大小来测试服务器性能,借助htop指令来直观的查看机器的负载情况。

Apache-AB压力测试实例的更多相关文章

  1. apache ab压力测试报错(apr_socket_recv: Connection reset by peer (104))

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

  2. apache ab压力测试报错apr_socket_recv

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

  3. Apache ab压力测试时出现大量的错误原因分析

    最近有一个测试任务,是测试nginx的并发请求到底能够达到多少的, 于是就用ab工具对其进行压力测试. 这压力测试一执行,问题就来了:发起10000次请求,并发100,错误的情况能达到30%--50% ...

  4. apache ab压力测试

    今天提到压力测试,想起以前看到的ab,于是又重新查找了下资料,并记录了下. ab命令会创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访问. 它的测试目标是基于URL的,因此,既可以用来 ...

  5. apache ab 压力测试工具

    Apache的ab命令模拟多线程并发请求,测试服务器负载压力,也可以测试nginx.lighthttp.IIS等其它Web服务器的压力.Apache附带的ab工具(使用的PHP环境是WAMP集成环境, ...

  6. apache ab 压力测试

    我今天在慕课网中无意之间看到压力测试,可以模拟高并发; 顺便看了一下有没有相关的博客,发现下面的这个很详细; //在apache 安装目录下的bin,运行命令 ab -n1000 -c10 http: ...

  7. MAC 安装 apache ab 压力测试工具以及遇到的坑

    ab 是apache对 http服务器进行压力测试的工具,它可以测试出服务器每秒可以处理多少请求.本文记录mac版本安装 ab 的步骤以及遇到的坑. 下载 进入 apache ab官网 下载页面. 安 ...

  8. [转载] apache ab压力测试报错(apr_socket_recv: Connection reset by peer (104))

    遇见相同的问题. https://www.cnblogs.com/felixzh/p/8295471.html -------------------------------------------- ...

  9. Apache JMeter压力测试实例

    脚本录制 脚本录制,JMeter启用WEB代理,浏览器把代理上网设置为JMeter所在的IP地址,自己电脑就是127.0.0.1代理端口默认8080.至于浏览器修改代理上网服务器,不做截图. Jmet ...

  10. 4分钟apache自带ab压力测试工具使用: 2015.10.4

    2015.10.44分钟apache自带ab压力测试工具使用:win8.1 wampserver2.5 -Apache-2.4.9-Mysql-5.6.17-php5.5.12-64b 可以参考一下部 ...

随机推荐

  1. php文件上传大小限制的修改方法大全

    php文件上传大小限制的修改方法大全 基本就是修改maxsize选项,当然为了提高上传文件的成功率,还需要设置超时时间等. 文章如下: [php文件上传]php文件上传大小限制修改,phpmyadmi ...

  2. centos7 下载eclipse的镜像站点

    这里吐槽一下,由于两天前centos被我农崩溃了(系统更新的锅),所以所有的开发环境又得重来一次. 其实,之前去eclipse的官网下载就很慢,打开官网也很慢,然后你会发现下下来的安装程序(只有40多 ...

  3. hibernateTemplate的load方法

    hibernateTemplate的load方法采用延迟加载,所以应当注意. 如果配置不当,采用此方法获取对象,往往会出现异常: javax.servlet.ServletException: org ...

  4. 关于用 MySQL 存储 Emoji

    http://www.v2ex.com/t/137724 如果你希望让你的网站或者 App 支持 Emoji,那么在初次设置 MySQL 时,有一些细节你需要知道. Emoji Emoji 字符的特殊 ...

  5. 用java运行Hadoop程序报错:org.apache.hadoop.fs.LocalFileSystem cannot be cast to org.apache.

    用java运行Hadoop例程报错:org.apache.hadoop.fs.LocalFileSystem cannot be cast to org.apache.所写代码如下: package ...

  6. 我见过的 Objective-C, 讲的最通俗易懂的入门教程....

    http://www.cnblogs.com/mjios/category/454764.html  ---- 给力...

  7. SQLite入门与分析(三)---内核概述(1)

    写在前面:从本章开始,我们开始进入SQLite的内核.为了能更好的理解SQLite,我先从总的结构上讨论一下内核,从全局把握SQLite很重要.SQLite的内核实现不是很难,但是也不是很简单.总的来 ...

  8. SPRING IN ACTION 第4版笔记-第九章Securing web applications-003-把用户数据存在数据库

    一. 1.It’s quite common for user data to be stored in a relational database, accessed via JDBC . To c ...

  9. ANDROID_MARS学习笔记_S01_009Relative_LAYOUT例子

    1. <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android ...

  10. MAC OS Nginx php-fpm相关

    Nginx 命令 sudo nginx // 启动Nginx #重新加载|重启|停止|退出 sudo nginx -s reload|reopen|stop|quit #上传文件限制更改: 进入ngi ...