如何对web表单文件上载进行压力测试?

如何对web表单文件上载进行压力测试?,web,webforms,file-upload,bandwidth,Web,Webforms,File Upload,Bandwidth,我需要测试一个需要上传文件的web表单。 每次上传的文件大小约为10 MB。 我想测试服务器是否能够同时处理100多个上传,并且仍然保持不变 对站点的其余部分作出响应 我们办公室重复提交的表格将受到我们当地DSL线路的限制。 服务器在异地,具有更高的带宽 基于经验的答案会很好,但任何建议都是欢迎的。我可能会引导您使用cURL,通过POST请求提交随机内容(比如,从/dev/uradom中读取10MB并将其编码到base32),并手动制作主体以作为文件上传(这不是火箭科学) 将该脚本分叉100次,

我需要测试一个需要上传文件的web表单。 每次上传的文件大小约为10 MB。 我想测试服务器是否能够同时处理100多个上传,并且仍然保持不变 对站点的其余部分作出响应

我们办公室重复提交的表格将受到我们当地DSL线路的限制。 服务器在异地,具有更高的带宽


基于经验的答案会很好,但任何建议都是欢迎的。

我可能会引导您使用cURL,通过POST请求提交随机内容(比如,从
/dev/uradom
中读取10MB并将其编码到base32),并手动制作主体以作为文件上传(这不是火箭科学)

将该脚本分叉100次,可能是在几个服务器上。只需确保系统管理员不会认为您正在进行DDoS攻击或其他操作:)

不幸的是,这个答案仍然有点含糊不清,但希望它能帮助你找到正确的方向

根据利亚姆的评论继续:
如果接收上传的服务器与连接到它的客户端不在同一个LAN中,那么最好让尽可能多的远程节点进行压力测试,即使只是尽可能真实地模拟行为。但是,如果你不能访问本地局域网以外的计算机,本地局域网总比没有好

从同一硬件内部进行压力测试不是一个好主意,因为您需要在服务器上执行双重负载:计算出随机数据,打包数据,通过TCP/IP堆栈发送数据(尽管可能不是通过以太网),只有这样,服务器才能发挥其魔力。如果发送部分是外包的,那么接收端的性能将是原来的两倍。

使用您喜欢的语言实现自动化。启动100个Selenium线程,每个线程在输入中键入文件的路径,然后单击submit

您可以生成100个按顺序命名的文件,以便轻松地对其进行循环,或者反复使用同一个文件,使用Apache附带的命令行工具 (我刚刚发现了这个很棒的小工具)。与cURL或wget不同, ApacheBench是为在web服务器(任何类型的web服务器!)上执行压力测试而设计的。 它也产生了大量的统计数据。以下命令将发送一个 HTTP POST请求,包括文件
test.jpg
to
http://localhost/
100次,最多4个并发请求

ab -n 100 -c 4 -p test.jpg http://localhost/
它产生如下输出:

Server Software:        
Server Hostname:        localhost
Server Port:            80

Document Path:          /
Document Length:        0 bytes

Concurrency Level:      4
Time taken for tests:   0.78125 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Non-2xx responses:      100
Total transferred:      2600 bytes
HTML transferred:       0 bytes
Requests per second:    1280.00 [#/sec] (mean)
Time per request:       3.125 [ms] (mean)
Time per request:       0.781 [ms] (mean, across all concurrent requests)
Transfer rate:          25.60 [Kbytes/sec] received

Connection Times (ms)
          min  mean[+/-sd] median   max
Connect:        0    0   2.6      0      15
Processing:     0    2   5.5      0      15
Waiting:        0    1   4.8      0      15
Total:          0    2   6.0      0      15

Percentage of the requests served within a certain time (ms)
  50%      0
  66%      0
  75%      0
  80%      0
  90%     15
  95%     15
  98%     15
  99%     15
 100%     15 (longest request)

我猜你会在服务器本身或同一局域网上的某台机器上这样做?对我来说不起作用。AB抱怨缺少内容类型和边界标题。另外,在你粘贴的结果中,它有。。。非2xx响应:100p参数是指包含表单数据的文件,包括要上载的任何文件。对于在内容类型headerHey Liam中指定的边界参数分隔的项目,如何为上载的文件指定字段名?@securecurve我不确定,但您可能需要准备post数据有效负载,包括文件中的多部分/表单数据头,并将其与ab一起发送。请参阅规范底部的示例: