Apache Bench安装与使用

转载:ApacheBench(ab)使用详解

一、Apache Bench简介

ApacheBench 是 Apache 服务器自带的一个web压力测试工具,简称ab。ab又是一个命令行工具,对发起负载的本机要求很低,根据ab命令可以创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访问,因此可以用来测试目标服务器的负载压力。它的测试目标是基于URL的,因此,既可以用来测试Apache的负载压力,也可以测试nginx、lighthttp、tomcat、IIS等其它Web服务器的压力。总的来说ab工具小巧简单,上手学习较快,可以提供需要的基本性能指标,但是没有图形化结果,不能监控。

ab命令对发出负载的计算机要求很低,既不会占用很高CPU,也不会占用很多内存,但却会给目标服务器造成巨大的负载,其原理类似CC攻击。自己测试使用也须注意,否则一次上太多的负载,可能造成目标服务器因资源耗完,严重时甚至导致死机。

二、Apache Bench安装

首先需要安装Apache服务器,下载地址:https://www.apachelounge.com/download/

建议下载最新版本的,因为旧版本的ab不支持-r参数。

三、Apache Bench使用

1.使用例子:

 步骤1:找到安装Apache Bench文件的bin目录下,输入ab.exe 可以看到提示信息如下:

 步骤2:

输入 ab -n 100 -c 20 http://localhost:8080/jsrWeb/index.html(-n发出100个请求,-c模拟20并发,相当100人同时访问,后面是测试url)

输入 ab -n 100 -c 20 http://localhost:8080/jsrAdminWeb/test?str=AA (传入一个参数)

输入 ab -n 100 -c 20 -T "text/plain" -p test.txt http://localhost:8080/jsrAdminWeb/test (传入多个参数,test.txt文件与ab.exe在同目录下,test.txt文件里写str1=AA&str2=BB)

输入 ab -n 100 -c 20 -T "text/plain" -p E:\DOWNLOAD\httpd-2.4.33-Win64-VC15\Apache24\test.txt http://localhost:8080/jsrAdminWeb/test (传入多个参数,test.txt文件与ab.exe不在同目录下,写入test.txt文件的全路径)

输入 ab -t 60 -c 20 http://localhost:8080/jsrWeb/index.html 在60秒内发请求,一次20个请求)

结果参数解释(转载): 

Server Software:        Microsoft-HTTPAPI/2.0 
Server Hostname:        192.168.0.10 
Server Port:            80

Document Path:          / 
Document Length:        315 bytes       HTTP响应数据的正文长度

Concurrency Level:      800 
Time taken for tests:   0.914 seconds    所有这些请求处理完成所花费的时间 
Complete requests:      800             完成请求数 
Failed requests:        0                失败请求数 
Write errors:           0                
Non-2xx responses:      800 
Total transferred:      393600 bytes     网络总传输量 
HTML transferred:       252000 bytes     HTML内容传输量 
Requests per second:    875.22 [#/sec] (mean) 吞吐量-每秒请求数 
Time per request:       914.052 [ms] (mean)  服务器收到请求,响应页面要花费的时间 
Time per request:       1.143 [ms] (mean, across all concurrent requests) 并发的每个请求平均消耗时间 
Transfer rate:          420.52 [Kbytes/sec] received 平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题


网络上消耗的时间的分解: 
Connection Times (ms) 
              min  mean[+/-sd] median   max 
Connect:        0    1   0.5      1       3 
Processing:   245  534 125.2    570     682 
Waiting:       11  386 189.1    409     669 
Total:        246  535 125.0    571     684

整个场景中所有请求的响应情况。在场景中每个请求都有一个响应时间 
其中 50% 的用户响应时间小于 571 毫秒 
80 % 的用户响应时间小于 652 毫秒 
最大的响应时间小于 684 毫秒 
Percentage of the requests served within a certain time (ms) 
  50%    571 
  66%    627 
  75%    646 
  80%    652 
  90%    666 
  95%    677 
  98%    681 
  99%    682 
100%    684 (longest request)

2.ApacheBench的参数说明

 1 格式:ab [options] [http://]hostname[:port]/path
 2 参数说明:
 3 -n requests Number of requests to perform
 4 //在测试会话中所执行的请求个数(本次测试总共要访问页面的次数)。默认时,仅执行一个请求。
 5 -c concurrency Number of multiple requests to make
 6 //一次产生的请求个数(并发数)。默认是一次一个。
 7 -t timelimit Seconds to max. wait for responses
 8 //测试所进行的最大秒数。其内部隐含值是-n 50000。它可以使对服务器的测试限制在一个固定的总时间以内。默认时,没有时间限制。
 9 -p postfile File containing data to POST
10 //包含了需要POST的数据的文件,文件格式如“p1=1&p2=2”.使用方法是 -p 111.txt 。 (配合-T)
11 -T content-type Content-type header for POSTing
12 //POST数据所使用的Content-type头信息,如 -T “application/x-www-form-urlencoded” 。 (配合-p)
13 -v verbosity How much troubleshooting info to print
14 //设置显示信息的详细程度 – 4或更大值会显示头信息, 3或更大值可以显示响应代码(404, 200等), 2或更大值可以显示警告和其他信息。 -V 显示版本号并退出。
15 -w Print out results in HTML tables
16 //以HTML表的格式输出结果。默认时,它是白色背景的两列宽度的一张表。
17 -i Use HEAD instead of GET
18 // 执行HEAD请求,而不是GET。
19 -x attributes String to insert as table attributes
20 -y attributes String to insert as tr attributes
21 -z attributes String to insert as td or th attributes
22 -C attribute Add cookie, eg. -C “c1=1234,c2=2,c3=3″ (repeatable)
23 //-C cookie-name=value 对请求附加一个Cookie:行。 其典型形式是name=value的一个参数对。此参数可以重复,用逗号分割。
24 提示:可以借助session实现原理传递 JSESSIONID参数, 实现保持会话的功能,如
25 -C ” c1=1234,c2=2,c3=3, JSESSIONID=FF056CD16DA9D71CB131C1D56F0319F8″ 。
26 -H attribute Add Arbitrary header line, eg. ‘Accept-Encoding: gzip’ Inserted after all normal header lines. (repeatable)
27 -A attribute Add Basic WWW Authentication, the attributes
28 are a colon separated username and password.
29 -P attribute Add Basic Proxy Authentication, the attributes
30 are a colon separated username and password.
31 //-P proxy-auth-username:password 对一个中转代理提供BASIC认证信任。用户名和密码由一个:隔开,并以base64编码形式发送。无论服务器是否需要(即, 是否发送了401认证需求代码),此字符串都会被发送。
32 -X proxy:port Proxyserver and port number to use
33 -V Print version number and exit
34 -k Use HTTP KeepAlive feature
35 -d Do not show percentiles served table.
36 -S Do not show confidence estimators and warnings.
37 -g filename Output collected data to gnuplot format file.
38 -e filename Output CSV file with percentages served
39 -h Display usage information (this message)
40 //-attributes 设置属性的字符串. 缺陷程序中有各种静态声明的固定长度的缓冲区。另外,对命令行参数、服务器的响应头和其他外部输入的解析也很简单,这可能会有不良后果。它没有完整地实现 HTTP/1.x; 仅接受某些’预想’的响应格式。 strstr(3)的频繁使用可能会带来性能问题,即你可能是在测试ab而不是服务器的性能。

 

posted @ 2018-04-08 23:36  娜娜娜娜小姐姐  阅读(2076)  评论(0编辑  收藏  举报