【问题标题】:How do I stress test a web form file upload?如何对 Web 表单文件上传进行压力测试?
【发布时间】:2010-09-18 17:54:26
【问题描述】:

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

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

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

【问题讨论】:

    标签: web webforms file-upload bandwidth


    【解决方案1】:

    我可能会指导您使用 cURL 并仅提交随机内容(例如,从 /dev/urandom 中读取 10MB 并将其编码为 base32),通过 POST 请求并手动将正文制作为文件上传(它是不是火箭科学)。

    将该脚本分叉 100 次,也许在几台服务器上。只要确保系统管理员不认为你在做 DDoS 或其他什么 :)

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

    按照 Liam 的评论继续:
    如果接收上传的服务器与连接到它的客户端不在同一个局域网中,那么最好尽可能地获取远程节点进行压力测试,如果只是为了模拟尽可能真实的行为。但是如果你无法访问本地局域网之外的计算机,本地局域网总比没有好。

    在同一硬件内部进行压力测试不是一个好主意,因为您会在服务器上进行双重加载:找出随机数据,打包它,通过 TCP/IP 堆栈发送它(尽管可能不是通过以太网),只有这样,服务器才能发挥它的魔力。如果发送部分是外包的,那么接收端的性能会提高一倍(加上任意大小的盐)。

    【讨论】:

    • 我猜你会在服务器本身或同一局域网上的某些机器上执行此操作?
    【解决方案2】:

    使用您喜欢的语言自动化Selenium RC。启动 100 个 Selenium 线程,每个线程在输入中输入文件路径并点击提交。

    您可以生成 100 个按顺序命名的文件以便轻松循环它们,或者只是一遍又一遍地使用同一个文件

    【讨论】:

      【解决方案3】:

      使用与 Apache 捆绑的 ab (ApacheBench) 命令行工具 (我刚刚发现了这个很棒的小工具)。与 cURL 或 wget 不同, ApacheBench 设计用于在 Web 服务器(任何类型的 Web 服务器!)上执行压力测试。 它也产生大量统计数据。以下命令将发送一个 HTTP POST 请求,包括文件 test.jpghttp://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 抱怨缺少 Content-Type 和边界标头。此外,在您粘贴的结果中,它具有... 非 2xx 响应:100
      • -p 参数是一个包含表单数据的文件,包括要上传的任何文件。项目由您在内容类型标题中指定的边界参数分隔
      • 你好 Liam,如何为上传的文件指定字段名称?
      • @securecurve 我不确定,但您可能需要准备发布数据有效负载,包括文件中的 multipart/form-data 标头并使用 ab 发送。请参阅此处规范底部的示例:w3.org/TR/html401/interact/forms.html#h-17.13.4.2
      猜你喜欢
      • 2021-07-17
      • 2015-02-22
      • 2021-01-18
      • 2012-06-16
      • 2014-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-20
      相关资源
      最近更新 更多