2014
11-27

ab基准测试分析

Apache Benchmark(ab)工具是最著名的基准测试工具之一,它是默认的Apache安装的一部分,能够通过模拟对特定URL的任意数量请求来对Web服务器进行负载测试。ab工具提供以下信息:

  • 传输的总数据大小(以字节为单位)
  • Web服务器在模拟流量下每秒可以支持的请求总数
  • 完成一个请求所花费的最长时间(以毫秒为单位)
  • 完成一个请求所花费的最短时间(以毫秒为单位)

使用ab工具还可以运行很多不同的负载模拟,例如:

  • 对Web文档的模拟请求
  • 指定时间内的请求
  • 打开Keep-Alive时的请求

最重要的是,Apache Benchmark是独立于Apache Web服务器的,也就是不启动web服务器,也可以运行此工具。


1、运行Apache Benchmark

在终端里输入:

#URL路径须完整,不能只是域名
#2000个请求总数,200个并发数
ab -n 2000 -c 200 http://item.XXXXXX.com/190006142.html

运行结果如下图:
2.png


2、压力测试结果数据分析
bbgds@BBGDS-PC d:\xampp
# ab -n 2000 -c 200  http://item.XXXXXX.com/190006142.html
This is ApacheBench, Version 2.3 <$Revision: 1604373 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking item.XXXXXX.com (be patient)
Completed 200 requests
Completed 400 requests
Completed 600 requests
Completed 800 requests
Completed 1000 requests
Completed 1200 requests
Completed 1400 requests
Completed 1600 requests
Completed 1800 requests
Completed 2000 requests
Finished 2000 requests

#服务器信息
Server Software:        nginx/1.6.0
Server Hostname:        item.XXXXXX.com
Server Port:            80

#文档信息
Document Path:          /190006142.html
Document Length:        61126 bytes

#连接信息
Concurrency Level:      200                #所进行的并发请求总数
Time taken for tests:   35.020 seconds     #运行所花费的总时间
Complete requests:      2000               #模拟的请求总数中已完成的请求总数
Failed requests:        21                 #模拟的请求总数中失败的请求总数
   (Connect: 0, Receive: 0, Length: 21, Exceptions: 0)
Total transferred:      123161978 bytes    #整个模拟的响应中传输的总数据,大小包括标头数据(单位:字节)
HTML transferred:       122251978 bytes    **#整个模拟传输的内容正文的总大小(单位:字节)**
Requests per second:    57.11 [#/sec] (mean)    #每秒支持的请求总数
Time per request:       3502.000 [ms] (mean)    #满足一个请求需要花费的总时间(单位:毫秒)
Time per request:       17.510 [ms] (mean, across all concurrent requests)    #满足所有并发请求中的一个请求需要花费的总时间(单位:毫秒)
Transfer rate:          3434.48 [Kbytes/sec] received    #每秒收到的字节总数(Kb)

#连接指标细目分类
#展现请求在每个过程状态中所需的时间。Total字段中的最小值、最大值是关键字段。
#最小值:响应一个请求所需花费的最短时间
#最大值:响应一个请求所需花费的最长时间
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        9   17  71.3     11    1212
Processing:    84 3348 1153.4   3662    7078
Waiting:       41 1983 1245.2   1913    5028
Total:         98 3365 1156.0   3676    7102

Percentage of the requests served within a certain time (ms)
  50%   3676
  66%   3757
  75%   3784
  80%   3808
  90%   4840
  95%   5083
  98%   5808
  99%   6103
 100%   7102 (longest request)

其中"HTML transferred"、"Requests per second"及"Time per request"都是关键字段。这些字段使我们能够大概了解web服务器为一个请求返回的数据量、Web服务器一秒可以处理的请求总数以及一个请求成功地收到来自Web服务器的响应所花费的总时间。
一般来说,我们的程序优化目标是降低"HTML transferred",提高"Requests per second"并且降低"Time per request"值。

「真诚赞赏,手留余香」
您的支持将鼓励我继续创作 :)