一、ab工具介绍
ab是apache bench命令的缩写。ab是Apache超文本传输协议(HTTP)的性能测试工具。它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如nginx、tomcat、IIS等。
二、原理
ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问。它的测试目标是基于URL的,因此,它的实用性非常高,可用作测试多种服务器的压力。
ab命令对发出负载的计算机要求很低,它既不会占用很高CPU,也不会占用很多内存。但却会给目标服务器造成巨大的负载,其原理类似CC攻击。自己测试使用也需要注意,否则一次上太多的负载。可能造成目标服务器资源耗完,严重时甚至导致死机。
三、下载和安装
Linux系统:
CentOS6 默认安装
CentOS7需要手动安装
联网安装:yum install httpd-tools
Windows系统:
访问Apache官网进行下载
Apache Haus Downloads
四、使用
在Linux中安装完成后,打开终端,到ab工具的bin目录下,就可以输入ab的命令进行测试,
1、请求路径不带参数的情况下,比如发送get请求
ab -n 100 -c 10 http://127.0.0.1:8080/
如果是在window上启动项目,在Linux中用ab测试,Linux通过window的IP地址加 端口号 访问,也有可能是Linux的IP 地址加 端口号 访问,测试之前关闭window和Linux防火墙
ab -n 100 -c 10 http://XX.XX.XX.XX:8080/
2、请求路径带参数,比如发送post请求,要把参数存到一个文件里,这个文件叫postfile(这个文件名字可以随便取,没有扩展名),文件内容模拟表单提交参数,以&符号结尾。比如
内容:prodid=0101&
文件写好之后,写-p 后面跟文件的路径。如果是在windows上测试,windows无法识别,可以写绝对路径。
ab -n 2000 -c 200 -k -p ~/postfile -T application/x-www-form-urlencoded http://127.0.0.1:8080/XX
ab测试工具使用参数:
参数 | 使用说明 |
---|---|
-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 | 显示帮助信息 |
纯属个人经验,喜欢的可以点赞关注,后续见!!!