Apache 的httpd 工具包中提供了apachebench,可以简单的做网站性能压力测试。
ab的选项主要有如下:
-A auth-username:password:指定连接服务器的基本的认证凭据;
-c:并发请求数,默认的并发数是1个;
-C cookie-name=value:添加cookie,参数通常是一个名称 = 值对的形式,此字段可重复。
-g gnuplot-file:将测试结果输出为“gnuolot”文件;
-h:显示帮助信息;
-H custom-header:为请求追加一个额外的头信息,参数通常一个有效的标题行的形式,包含冒号分隔的字段值对(例如: "Accept-Encoding: zip/zop;8bit");
-i:使用“head”请求方式代替get请求方式;
-k:激活HTTP中的“keepAlive”特性,即,在一个 HTTP 会话中执行多个请求。默认值是没有keepalive特性;
-n:指定测试会话使用的请求数;
-q:当处理超过 150 个请求,ab 输出 每 10%或者 100 个请求,-q 标志将禁止显示这些消息。
-t timelimit 最大基准测试花费的秒数。这意味着-n 50000 使用此基准测试内固定的时间总量。默认是没有时间限制。注意,这是整个测试话费的总时间
-v:设置详细模式等级;
-w:以HTML表格方式打印结果;
-X proxy[:port]:使用指定的代理服务器发送请求;
-f protocol Specify SSL/TLS protocol (SSL2, SSL3, TLS1, or ALL) 协议指定 SSL/TLS 协议 (SSL2、 SSL3、 TLS1,或所有)
最常用的是-c 和 -n 了。
我们可以看一个例子,了解测试的结果。
[minzhu@huohao ~]$ ab -c 50 -n 1000 www.baidu.com/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking www.baidu.com (be patient) #这段信息可以使用-q 标志取消显示
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests
Server Software: BWS/1.1
Server Hostname: www.baidu.com
Server Port: 80
Document Path: /
Document Length: 100129 bytes # 测试的站点的文件大小,接近100k
Concurrency Level: 50 # 并发请求数
Time taken for tests: 8.052 seconds # 测试花费的总时间
Complete requests: 1000 # 测试的总请求数
Failed requests: 998 # 失败的请求数
(Connect: 0, Receive: 0, Length: 998, Exceptions: 0)
Write errors: 0
Total transferred: 101315697 bytes # 总共传输的字节数
HTML transferred: 100337448 bytes # 总共传输的HTML字节数
Requests per second: 124.19 [#/sec] (mean) # 平均每秒处理请求数
Time per request: 402.621 [ms] (mean) # 此处是每个请求平均花费的时间,注意和下边的计算方法不一样
Time per request: 8.052 [ms] (mean, across all concurrent requests) #此处是平均每个请求花费的时间
Transfer rate: 12287.14 [Kbytes/sec] received # 平均每秒传输字节数
Connection Times (ms)
min mean[+/-sd] median max 最小值 平均值 中位数 最大值
Connect: 3 90 494.1 25 7029 连接
Processing: 10 272 522.5 86 4754 传输中
Waiting: 4 44 82.1 28 1438 等待
Total: 25 362 712.5 112 7146 总计
Percentage of the requests served within a certain time (ms) # 此处是每个请求完成的百分段
50% 112
66% 131
75% 207
80% 334
90% 1099
95% 1506
98% 2269
99% 3514
100% 7146 (longest request)