如何用Apache ab来测试我们的服务器的负载能力呢。
Ab是Apache服务器自带的一个压力测试工具,在apache安装目录下的bin目录下。如果是windows用户可以把这个目录填到环境变量的path里,就可以在cmd里直接运行ab了。
基本样例
例如我们要测试百度网站,模拟100个用户每个用户访问1次
ab -c100 -n100
http://www.baidu.com/
注意最后的'/'不能省啊。
测试结果
测试完成后会出现下面的内容
Server Software: BWS/1.0
Server Hostname: www.baidu.com
Server Port: 80
Document Path: /
Document Length: 6816 bytes
Concurrency Level: 100
Time taken for tests: 1.969 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Total transferred: 719797 bytes
HTML transferred: 681600 bytes
Requests per second: 50.79 [#/sec] (mean)
Time per request: 1968.750 [ms] (mean)
Time per request: 19.688 [ms] (mean, across all concurrent requests)
Transfer rate: 357.04 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 16 18 5.4 16 31
Processing: 31 1004 557.2 1031 1938
Waiting: 16 1002 557.5 1031 1938
Total: 47 1022 556.3 1047 1953
Percentage of the requests served within a certain time (ms)
50% 1047
66% 1359
75% 1516
80% 1609
90% 1781
95% 1859
98% 1938
99% 1953
100% 1953 (longest request)
指标解释
Server Software:表示被测试的Web服务器软件名称,它来自于HTTP响应头信息。
Server Hostname:表示请求URL中的主机名部分,来自于HTTP请求头部分。
Server Port:表示被测试的Web服务器软件监听端口。
Document Path:表示请求URL中的根绝对路径,来自HTTP请求头部分。
Document Length:表示HTTP响应数据的正文长度。
Concurrency Level:表示并发用户数。就是参数c指定的数字
Time taken for tests:表示所有请求被处理完所花费的总时间。就是参数t指定的数字
Complete requests:表示总请求数。就是参数n指定的数字(如果正常结束没中断的话)
Failed requests:表示失败请求数。此处失败指请求在连接服务器、发送数据、接收数据等环节发生异常,以及无响应后超时的情况。
Total transferred:表示所有请求的响应数据长度总和,包括每个HTTP响应数据的头信息和正文数据的长度。此处并不包括HTTP请求数据的长度,所以Total transferred代表了从Web服务器流向用户PC的应用层数据总长度。可以使用-v参数查看详细的HTTP头信息。
HTML transferred:表示所有请求的响应数据中正文数据的总和,也就是减去了Total transferred中HTTP响应数据中头信息的长度。
Requests per second:表示吞吐率,数值上等于Complete requests / Time taken for tests。这是一个重要的指标,我们测试主要是看看这个值的高低,它一定程度上代表了服务器性能
Time per request:表示用户平均请求等待时间,数值上等于Time taken for tests / (Complete requests / Concurrency Level)。
Time per request(across all concurrent requests):表示服务器平均请求等待时间,为吞吐率的倒数,数值上等于Time taken for tests / Complete requests, 也等于Time per request / Concurrency Level。
Transfer rate:表示请求在单位时间内从服务器获取的数据长度。数值上等于Total transferred / Time taken for tests。这个值大于出口带宽的话说明你的带宽有瓶颈阻碍了服务器的发挥应该购买更大的带宽
Percentage of the requests served within a certain time:表示每个请求处理时间的分布情况。注意这里的处理时间为Time per request,即对于单个用户而言平均每个请求处理的时间。
重要参数解释
-c :同一时间的并发请求数
-n :请求的总数量
-k :启用http持久连接(keepalive)属性,默认是不启用
-t :最大测试时间(单位秒)要是你不想时间太长可以用这个参数限制但是时间限制有点误差
-help 查看帮助(还有很多参数可以查看帮助来学习这里就不列举了)