支持上传文件的web压力测试方法

发布: 2012-09-03 10:38

1。常用的web压力测试工具有ab(apachebench)和webbench、siege。

常用的web调试工具有wget,curl。

本篇从压力测试的角度讲,以前两者为主,后两者主要列举它们的几个相应的用法。


2、由于网络上少见关于ab 的POST上传文件文章,就先从这个用法说起。

在post上传文件时,需要使用multipart/form-data模式上传,这样服务器端才能正确识别上传的文件信息。

命令行:ab -v 2 -T "multipart/form-data; boundary=---1234abcd" -p ~/abpost.txt http://yourhost/upload.php

在进行压力测试的时候,可以添加-n 500 -c 5参数,执行并发为5的请求,累计发出500次请求。


3、abpost.txt文件内容(注意不需要带==的头尾两行):

注:前面3个是普通的字符串值,最后一个是文件上传域。

=====开始==========

-----1234567890
Content-Disposition: form-data; name="p1"

123444444444444444
-----1234567890
Content-Disposition: form-data; name="p2"

7543545647667567567
-----1234567890
Content-Disposition: form-data; name="p3"

1346402565.9724
-----1234567890
Content-Disposition: form-data; name="Filedata"; filename="ab1_pod.jpg"
Content-Type: image/jpeg


[base64 encoded file content here]

--1234567890--

=====结束==========


4、对于普通的post请求,去掉文件的abpost.txt的文件上传域一段,并且把 -T 参数改为常用的'application/x-www-form-urlencoded'。


5、webbench不支持POST请求,不再细说,GET压力测试的用法与结果和ab相似。


6、seige的特点是支持批量访问url列表, 不需要编写额外的脚本。

通过Siege 配置生成工具 sproxy,可方面生成测试结果表格。


7、curl版本的文件上传命令:

curl -F "Filedata=@abcd.jpg" -F "p1=1234fggdg" -F "p2=dhdg57" -F
"p3=1346402565" -F "p4=026" http://yourhost/upload.php


8、wget -d 可输出http协议头信息。




原文: http://qtchina.tk/?q=node/680

Powered by zexport