Apache的ab命令模拟多线程并发请求,测试服务器负载压力,也可以测试nginx、lighthttp、IIS等其它Web服务器的压力。
Apache附带的ab工具非常容易使用。ab命令对发出负载的计算机要求很低,既不会占用很多CPU,也不会占用太多的内存,但却会给目标服务器造成巨大的负载,因此是某些DDOS攻击之必备良药,老少皆宜。自己使用也须谨慎。否则一次上太多的负载,造成目标服务器直接因内存耗光死机,而不得不硬重启,得不偿失。
在带宽不足的情况下,最好是本机进行测试,建议使用内网的另一台或者多台服务器通过内网进行测试,这样得出的数据,准确度会高很多。远程对web服务器进行压力测试,往往效果不理想(因为网络延时过大或带宽不足)
安装工具
yum install httpd-tools
用法
显示用法信息,其实就是ab -help。
-n即requests,用于指定压力测试总共的执行次数。-c即concurrency,用于指定压力测试的并发数。-t即timelimit,等待响应的最大时间(单位:秒)。-b即windowsize,TCP发送/接收的缓冲大小(单位:字节)。-p即postfile,发送POST请求时需要上传的文件,此外还必须设置-T参数。-u即putfile,发送PUT请求时需要上传的文件,此外还必须设置-T参数。-T即content-type,用于设置Content-Type请求头信息, 例如:application/x-www-form-urlencoded,默认值为text/plain。-v即verbosity,指定打印帮助信息的冗余级别。-w以HTML表格形式打印结果。-i使用HEAD请求代替GET请求。-x插入字符串作为table标签的属性。-y插入字符串作为tr标签的属性。-z插入字符串作为td标签的属性。-C添加cookie信息,例如:"Apache=1234"(可以重复该参数选项以添加多个)。-H添加任意的请求头,例如:"Accept-Encoding: gzip", 请求头将会添加在现有的多个请求头之后(可以重复该参数选项以添加多个)。-A添加一个基本的网络认证信息,用户名和密码之间用英文冒号隔开。-P添加一个基本的代理认证信息,用户名和密码之间用英文冒号隔开。-X指定使用的代理服务器和端口号,例如:"126.10.10.3:88"。-V打印版本号并退出。-k使用HTTP的KeepAlive特性。-d不显示百分比。-S不显示预估和警告信息。-g输出结果信息到gnuplot格式的文件中。-e输出结果信息到CSV格式的文件中。-r指定接收到错误信息时不退出程序。-h
测试
虽然ab可以配置的参数选项比较多,但是,一般情况下我们只需要使用形如ab -n 数字 -c 数字 url路径的命令即可。譬如,我们对http://192.168.0.10/进行压力测试。测试总次数为1000,并发数为100(相当于100个用户同时访问,他们总共访问1000次)。我们输入命令:
ab -n 1000 -c 100 http://192.168.0.10/This is ApacheBench, Version 2.3 <$Revision: 1430300 $>Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking 192.168.0.10 (be patient)Completed 100 requestsCompleted 200 requestsCompleted 300 requestsCompleted 400 requestsCompleted 500 requestsCompleted 600 requestsCompleted 700 requestsCompleted 800 requestsCompleted 900 requestsCompleted 1000 requestsFinished 1000 requestsServer Software: nginx/1.12.2 (服务器软件名称及版本信息)Server Hostname: 192.168.0.10 (服务器主机名)Server Port: 80 (服务器端口)Document Path: / (供测试的URL路径)Document Length: 612 bytes (供测试的URL返回的文档大小)Concurrency Level: 100 (并发数)Time taken for tests: 0.528 seconds (压力测试消耗的总时间)Complete requests: 1000 (压力测试的总次数)Failed requests: 0 (失败的请求数)Write errors: 0 (网络连接写入错误数)Total transferred: 845000 bytes (传输的总数据量)HTML transferred: 612000 bytes (HTML文档的总数据量)Requests per second: 1894.30 [#/sec] (mean) (平均每秒的请求数)Time per request: 52.790 [ms] (mean) (所有并发用户(这里是100)都请求一次的平均时间)Time per request: 0.528 [ms] (mean, across all concurrent requests) (单个用户请求一次的平均时间)Transfer rate: 1563.17 [Kbytes/sec] received (传输速率,单位:KB/s)Connection Times (ms) (网络上消耗的时间的分解)min mean[+/-sd] median maxConnect: 7 21 9.7 20 53Processing: 7 23 9.2 22 65Waiting: 7 22 8.8 21 63Total: 16 45 11.6 42 75Percentage of the requests served within a certain time (ms)50% 4266% 4775% 5080% 5490% 6495% 6898% 7099% 73 100% 75 (longest request)
Apache 的ab 测试工具
原文地址:http://blog.51cto.com/chaichuan/2071024