一、安装ab
sudo yum install httpd-tools
二、编辑POST数据文件
这里是最可能出问题的,因为vi编辑器会自动在文件末尾添加换行符,导致提交的数据不正确,需要强制关闭这个功能。
vi postdata.txt
:set invlist # 显示所有字符
:set bin noeol # 设置为二进制格式,禁止末尾自动添加换行符
:wq
wc -l postdata.txt # 统计文件行数
wc -m postdata.txt # 统计文件字数
三、尝试提交压测指令
nc -l 8081 # 监听8081端口,可以观察ab提交的数据
ab -n 1 -c 1 -p postdata.txt -T application/x-www-form-urlencoded http://127.0.0.1:8081/test.php?sign=a24e13f28196d86a52df905f6e645d6c
四、ab参数详解
-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 -help。