一、介绍
ab是apache bench命令的缩写。
ab是Apache超文本传输协议(HTTP)的性能测试工具。它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如nginx、tomcat、IIS等。
二、原理
ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问。它的测试目标是基于URL的,因此,它的实用性非常高,可用作测试多种服务器的压力。
ab命令对发出负载的计算机要求很低,它既不会占用很高CPU,也不会占用很多内存。但却会给目标服务器造成巨大的负载,其原理类似CC攻击。自己测试使用也需要注意,否则一次上太多的负载。可能造成目标服务器资源耗完,严重时甚至导致死机。
三、下载和安装
Windows版:
访问Apache官网进行下载
下载完之后解压到相应的位置
Linux版:
CentOS6 默认安装
CentOS7需要手动安装
联网安装:yum install httpd-tools
四、使用
打开cmd命令行(最好以管理员方式),到ab工具的bin目录下,就可以输入ab的命令进行测试了。
ab -n 100 -c 10 http://127.0.0.1:8080/test
注意,一定要是bin目录下,不然会出现不识别ab命令的情况。
如果需要携带参数,发送post请求,要把参数存到一个文件里,这个文件叫postfile(这个文件名字可以随便取,没有扩展名),然后写-p 后面跟文件的路径,我这里写的~/postfile是cenos的写法,如果是windows无法识别,可以写绝对路径。
参数文件写成这种形式,把参数名和参数用等号连接,多个参数&连接
ab -n 2000 -c 200 -k -p ~/postfile -T application/x-www-form-urlencoded http://127.0.0.1:8080/test
这个是windows写法,写参数文件的绝对路径
ab -n 200 -c 20 -k -p D:\httpd-2.4.51-o111l-x64-vc15\Apache24\bin\postfile -T application/x-www-form-urlencoded http://127.0.0.1:8080/mai
如果是get请求就不需要参数文件了,可以直接写
ab -n 200 -c 20 -k http://127.0.0.1:8080/mai?id=101
发送成功是这个样子的
下面是参数详解:
-n(常用) | 发出x个请求 |
-c(常用) | 并发一次发出的多个请求数,也就是模拟x个并发 |
-t(常用) | 将花费在基准测试上的时间限制为最长秒,在x秒内发请求 |
-s(常用) | 等待每个响应的最大超时秒数,默认30秒 |
-b | TCP发送/接收缓冲区的窗口大小(字节) |
-B | 地址进行传出连接时要绑定到的地址 |
-p(常用) | 发送POST请求时需要上传的文件,此外还必须设置-T参数。 |
-u(常用) | 发送PUT请求时需要上传的文件,此外还必须设置-T参数。 |
-T(常用) | 内容类型用于POST/PUT数据的内容类型标题,默认值为text/plain。例如:application/x-www-form-urlencoded, |
-v | 打印版本号并退出 |
-w | 在HTML表格中打印结果 |
-i | 使用HEAD而不是GET |
-x | 要作为表属性插入的字符串 |
-y | 要作为tr属性插入的字符串 |
-z | 要作为td或th属性插入的字符串 |
-C | 添加cookie,例如“Apache=1234”。(可重复) |
-H | 添加任意标题行,例如“接受编码:gzip” |
-A | 添加基本的WWW身份验证,属性是以冒号分隔的用户名和密码。 |
-P | 添加基本代理身份验证,属性是以冒号分隔的用户名和密码。 |
-X | 要使用的代理服务器和端口号 |
-V | 打印版本号并退出 |
-k(常用) | 使用HTTP KeepAlive功能 |
-d | 不要在表格中显示已送达的百分位数。 |
-S | 不显示服务于表格的百分位数。不显示置信度估计器和警告。 |
-q | 执行超过150个请求时不显示进度 |
-l | 接受可变文档长度(用于动态页面) |
-g | 将收集的数据输出到gnuplot格式文件。 |
-e | 输出提供百分比的CSV文件 |
-r | 套接字接收错误时不退出。 |
-m | 方法名 |
-h | 显示帮助信息 |
如有不准确的地方或者需要补充的地方欢迎大家指正!