ab命令原理
Apache的ab命令模拟多线程并发请求,测试服务器负载压力,也可以测试nginx、lighthttp、IIS等其它Web服务器的压力。
ab命令对发出负载的计算机要求很低,既不会占用很多CPU,也不会占用太多的内存,但却会给目标服务器造成巨大的负载,因此是某些DDOS攻击之必备良药,老少皆宜。自己使用也须谨慎。否则一次上太多的负载,造成目标服务器直接因内存耗光死机,而不得不硬重启,得不偿失。
在带宽不足的情况下,最好是本机进行测试,建议使用内网的另一台或者多台服务器通过内网进行测试,这样得出的数据,准确度会高很多。远程对web服务器进行压力测试,往往效果不理想(因为网络延时过大或带宽不足)
mac下apahce 模拟并发
ab -n 800 -c 800 http://192.168.1.102:8888//index.php?app=app&c=seckill&a=addQsec&gid=1&type=redis
xymMacBook-Air:~ xym$ ab -n 8 -c 8 http://192.168.1.102:8888//index.php?app=app&c=seckill&a=addQsec&gid=1&type=redis
[1] 2664
[2] 2665
[3] 2666
[4] 2667
[2] Done c=seckill
[3] Done a=addQsec
[4]+ Done gid=1
xymMacBook-Air:~ xym$ This is ApacheBench, Version 2.3 <$Revision: 1748469 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 192.168.1.102 (be patient).....done
Server Software: Apache
Server Hostname: 192.168.1.102
Server Port: 8888
Document Path: //index.php?app=app
Document Length: 28789 bytes //HTTP响应数据的正文长度
Concurrency Level: 8
Time taken for tests: 0.168 seconds //所有这些请求处理完成所花费的时间
Complete requests: 8 //完成请求数
Failed requests: 0//失败请求数
Total transferred: 231568 bytes 网络总传输量
HTML transferred: 230312 bytesHTML内容传输量
Requests per second: 47.60 [#/sec] (mean)吞吐量-每秒请求数
Time per request: 168.060 [ms] (mean)服务器收到请求,响应页面要花费的时间
Time per request: 21.007 [ms] (mean, across all concurrent requests)并发的每个请求平均消耗时间
Transfer rate: 1345.59 [Kbytes/sec] received平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.1 0 0
Processing: 122 144 16.4 142 168
Waiting: 120 142 16.6 140 166
Total: 122 144 16.4 143 168
整个场景中所有请求的响应情况。在场景中每个请求都有一个响应时间
其中 50% 的用户响应时间小于143 毫秒
80 % 的用户响应时间小于 166毫秒
最大的响应时间小于 168 毫秒
Percentage of the requests served within a certain time (ms)
50% 143
66% 147
75% 166
80% 166
90% 168
95% 168
98% 168
99% 168
100% 168 (longest request)