ab压力测试工具

一、背景介绍

        使用PHP开发的程序员在工作一年后就经常会碰到并发问题了(工作一年内的PHP程序员在不断熟悉增删改查及各种API、各种框架,当然,我说的是普通人),所以每个项目做下来后,需要用并发压力测试工具来对项目进行一个测试检查才行,而我们常常搭建的项目环境LAMP中的Apache就自带了一种压力测试工具——ab。

二、ab介绍

        ab,即Apache Benchmark,只要我们安装了Apache,就能够在Apache的安装目录中找到它。它所在的路径是Apache安装目录下的/bin/ab.exe。

三、ab使用实践

 如果是wamp环境的话,打开dos操作界面(win+R,输入cmd,回车)。

 跳转至Apache下的bin目录(我们也可以把apache下面的bin目录文件夹地址添加到环境变量中),执行ab相关的命令。

1. ab命令格式

ab [可选的参数选项] 需要进行压力测试的url

2. ab参数选项

-n:即requests,用于指定压力测试总共的执行次数(常用)。
-c:即concurrency,用于指定的并发数(常用)。
-t:即timelimit,等待响应的最大时间(单位:秒)。
-b:即windowsize,TCP发送/接收的缓冲大小(单位:字节)。
-p:即postfile,发送POST请求时需要上传的文件,此外还必须设置-T参数。
-u:即putfile,发送PUT请求时需要上传的文件,此外还必须设置-T参数。
-T:即content-type,用于设置Content-Type请求头信息,例如:application/x-www-form-urlencoded,默认值为text/plain。
-v:即verbosity,指定打印帮助信息的冗余级别。
-w:以HTML表格形式打印结果。
-i:使用HEAD请求代替GET请求。
-x:插入字符串作为table标签的属性。
-y:插入字符串作为tr标签的属性。
-z:插入字符串作为td标签的属性。
-C:添加cookie信息,例如:"Apache=1234"(可以重复该参数选项以添加多个)。
-H:添加任意的请求头,例如:"Accept-Encoding: gzip",请求头将会添加在现有的多个请求头之后(可以重复该参数选项以添加多个)。
-A:添加一个基本的网络认证信息,用户名和密码之间用英文冒号隔开。
-P:添加一个基本的代理认证信息,用户名和密码之间用英文冒号隔开。
-X:指定使用的和端口号,例如:"126.10.10.3:88"。
-V:打印版本号并退出。
-k:使用HTTP的KeepAlive特性。
-d:不显示百分比。
-S:不显示预估和警告信息。
-g:输出结果信息到gnuplot格式的文件中。
-e:输出结果信息到CSV格式的文件中。
-r:指定接收到错误信息时不退出程序。
-h:显示用法信息,其实就是ab -help。

3. 实例

ab -n 100 -c 50 http://www.xxxxxx.com/

  说明:总共访问100次,其中并发50次,测试地址为http://www.xxxxxx.com/

4. 测试结果及注释说明

##首先是apache的版本信息 

This is ApacheBench, Version 2.3  
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.xxx.xxx/ 
Licensed to The Apache Software Foundation, http://www.apache.org/
 
Benchmarking xxx.xxx.com (be patient)
 
 
Server Software:    Apache/2.2.19      ##apache版本 
Server Hostname:    vm1.xxx.com        ##请求的机子 
Server Port:      80                   ##请求端口
 
Document Path:     /xxx.html 
Document Length:    25 bytes           ##页面长度
 
Concurrency Level:   100               ##并发数 
Time taken for tests:  0.273 seconds   ##共使用了多少时间 
Complete requests:   1000              ##请求数 
Failed requests:    0                  ##失败请求 
Write errors:      0  
Total transferred:   275000 bytes      ##总共传输字节数,包含http的头信息等 
HTML transferred:    25000 bytes       ##html字节数,实际的页面传递字节数 
Requests per second:  3661.60 [#/sec] (mean)     ##每秒多少请求,这个是非常重要的参数数值,服务器的吞吐量 
Time per request:    27.310 [ms] (mean)          ##用户平均请求等待时间 
Time per request:    0.273 [ms] (mean, across all concurrent requests) ##服务器平均处理时间,也就是服务器吞吐量的倒数 
Transfer rate:     983.34 [Kbytes/sec] received  ##每秒获取的数据长度
 
Connection Times (ms) 
       min mean[+/-sd] median  max 
Connect:    0  1  2.3   0   16 
Processing:   6  25  3.2   25   32 
Waiting:    5  24  3.2   25   32 
Total:     6  25  4.0   25   48
 
Percentage of the requests served within a certain time (ms) 
 50%   25         ## 50%的请求在25ms内返回 
 66%   26         ## 60%的请求在26ms内返回 
 75%   26 
 80%   26 
 90%   27 
 95%   31 
 98%   38 
 99%   43 
100%   48 (longest request)

  ab测试网址不支持https,所以用ab测试好网站之后再加SSL证书。

你可能感兴趣的:(服务器,ab压力测试)