首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对上传的web表单文件进行压力测试?

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

Stack Overflow用户
提问于 2008-10-23 09:00:02
回答 3查看 6.6K关注 0票数 4

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

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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2008-11-27 14:59:38

使用与Apache捆绑在一起的ab (ApacheBench)命令行工具(我刚刚发现了这个很棒的小工具)。与cURL或wget不同,ApacheBench是为在web服务器(任何类型的web服务器)上执行压力测试而设计的。它也会产生大量的统计数据。以下命令将向http://localhost/发送包含文件test.jpg的HTTP POST请求100次,最多4个并发请求。

代码语言:javascript
复制
ab -n 100 -c 4 -p test.jpg http://localhost/

它会产生如下输出:

代码语言:javascript
复制
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)
票数 9
EN

Stack Overflow用户

发布于 2008-10-23 09:09:15

我可能会引导你使用cURL并提交随机的东西(例如,从/dev/urandom中读取10MB并将其编码到base32中),通过POST请求并手动将主体构造为文件上传(这不是火箭科学)。

对该脚本进行100次派生,可能会跨越几个服务器。只需确保系统管理员不会认为您正在执行DDoS或其他操作:)

不幸的是,这个答案仍然有点含糊,但希望它能帮助你走上正确的道路。

根据利亚姆的评论,继续:

如果接收上载的服务器与连接到该服务器的客户端不在同一LAN中,则最好获得尽可能远的节点进行压力测试,即使只是为了尽可能真实地模拟行为。但是,如果您无法访问本地LAN以外的计算机,则本地LAN总比没有好。

从相同的硬件内部进行压力测试不是一个好主意,因为您将在服务器上执行双重负载:找出随机数据,将其打包,通过TCP/IP堆栈发送(尽管可能不是通过以太网),然后服务器才能发挥它的魔力。如果发送部分被外包,您将获得接收端的双倍(任意大小的盐颗粒)性能。

票数 0
EN

Stack Overflow用户

发布于 2008-10-23 09:12:00

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

您可以生成100个按顺序命名的文件,以便轻松地循环遍历它们,或者反复使用相同的文件

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/229031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档