使用apachebench进行post压力测试
apachebench网上的资料很多
但是甚至包括国外的文章以及官方文档
出了help显示的内容之外就没有任何一丁点更详细些的内容了
要使用ab进行post数据测试.从help可以看出我们需要定义两个内容
一个是-p参数.指定需要post的数据
还有一个是-T参数,指定使用的content-type
我在服务器端简单的写了一个脚本.将获取到的post请求输出到文件
echo $_REQUEST['test'];
$file=fopen('/data/www/log.txt','a+');
fwrite($file,date("Y-m-d H:i:s"));
fwrite($file,$_REQUEST['test']);
fclose($file);
?>
然后在本地生成post.txt文件
内容为test=abc
使用ab进行测试
ab -n 1 -p post.txt http://192.168.0.2/test.php
发现服务器端接受到了请求,但是没有受到post的数据
使用类型之后.也还是不行
ab -n 1 -p post.txt -T ‘text/html’ http://192.168.0.2/test.php
使用get方式测试
ab -n 1 http://192.168.0.2/test.php?test=abc
服务器端则可以正常工作
和开始说的一样.翻烂了google也没有找到
最后只能用wireshark抓包
最后发现content-type一定要设置成为
application/x-www-form-urlencoded
最后如下测试.才最后通过
ab -n 1 -p post.txt -T ‘application/x-www-form-urlencoded’ http://192.168.0.2/test.php
还有postfile
如果有多条记录
内容可以写成
类似这样即可
这个也是文档中没有提及的,让我一开始以为postfile的格式有误.
网上有提到过一种格式
test2=b
这种是不对的
这样的ab会把整个
当作test1这个field传送出去
十二月 3rd, 2008 at 5:20 下午
貌似post方法的content-type就应该是这个吧
我记得从用c的cgi包写cgi上传程序的时候就是这么写的……
十二月 3rd, 2008 at 10:27 下午
没用过CGI方式写过,所以不是很了解.
看来基础知识还得加固才行.
不过光是postfile的内容
就从没有一个网页提到过
唯一一个提到的.还是错的.