Apache Bench安装与使用

摘要:
使用Apache Bench(ab)1的详细信息。Apache Bench简介Apache Bench是Apache Server附带的web压力测试工具。https:str=AA(传入参数)输入ab-n100-c20-T“text/plain”-test。txt:str1=AA&

转载: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张

三、Apache Bench使用

1.使用例子:

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

Apache Bench安装与使用第2张

 步骤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:DOWNLOADhttpd-2.4.33-Win64-VC15Apache24 est.txt http://localhost:8080/jsrAdminWeb/test (传入多个参数,test.txt文件与ab.exe不在同目录下,写入test.txt文件的全路径)

Apache Bench安装与使用第3张

输入 ab -t 60 -c 20 http://localhost:8080/jsrWeb/index.html 在60秒内发请求,一次20个请求)
Apache Bench安装与使用第4张

Apache Bench安装与使用第5张

结果参数解释(转载): 

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而不是服务器的性能。

免责声明:文章转载自《Apache Bench安装与使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇c#数字图像处理(二)彩色图像灰度化,灰度图像二值化kivy 使用webview加载网页下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

生成远程控制木马以及提权

远程控制木马以及提权 Kail攻击机IP: 192.168.199.216 Win7靶机IP:  192.168.199.132 Kali Linux 2中提供了多个可以用来产生远程控制被控端程序的方式,但是其中最为简单强大的方法应该要数Msfvenom命令了。这个命令是著名渗透测试软件Metasploit的一个功能。 以前旧版本的Metasplo...

Cypress web自动化23-cypress run 命令行参数详解

前言 非 GUI 模式下命令行运行 cypress,需知道有哪些参数可以使用。 查看命令行参数 输入 -h 查看命令行参数 cypress run -h Runs Cypress tests from the CLI without the GUI Options: -b, --browser <browser-name-or-path>...

shell学习(16)- 压缩和解压缩命令tar和zip

tar命令 [root@Linux ~]# tar [-cxtzjvfpPN] 文件与目录 .... 参数: -c :建立一个压缩文件的参数指令(create 的意思); -x :解开一个压缩文件的参数指令! -t :查看 tarfile 里面的文件! 特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在! 因为不可能同时压缩与解压缩。 -z...

利用 ADO.NET 连接到 Informix(转)

从 Connection 到强类型 DataSet 文档选项 打印本页 将此页作为电子邮件发送 未显示需要 JavaScript 的文档选项 讨论 样例代码 级别: 中级 Sean R. Durity (sdurity@cornercap.com), IT 管理人员, Co...

Java Script 读书笔记 (三) 函数

1. 函数作用域     在函数内部定义的变量,外部无法读取,称为“局部变量”(local variable)。    变量v在函数内部定义,所以是一个局部变量,函数之外就无法读取。    函数内部定义的变量,会在该作用域内覆盖同名全局变量。    1 var v=1; 2 function f(){ 3 var v=2; 4 console...

java多线程文件上传服务器

 描述: (1)jdk自带线程池见 JDK自带线程池配置 (2)此上传文件服务器中上传文件的后缀名通过第一段缓冲字符流传递,此缓冲字符流大小为1024,在文件接收端以1024接收、处理。 1、服务器代码如下(使用jdk自带线程池): 1 /** 2 * 服务器处理多线程问题 3 * 4 * 1.因为服务器是要很多人访问的,因此里面一定要用多...