Apache Benchmark(ab)工具是最著名的基准测试工具之一,它是默认的Apache安装的一部分,能够通过模拟对特定URL的任意数量请求来对Web服务器进行负载测试。ab工具提供以下信息:
使用ab工具还可以运行很多不同的负载模拟,例如:
最重要的是,Apache Benchmark是独立于Apache Web服务器的,也就是不启动web服务器,也可以运行此工具。
在终端里输入:
#URL路径须完整,不能只是域名
#2000个请求总数,200个并发数
ab -n 2000 -c 200 http://item.XXXXXX.com/190006142.html
运行结果如下图:
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"值。