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

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

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

有帮助吗?

解决方案

使用 ab(ApacheBench)命令行工具与Apache捆绑在一起 (我刚刚发现了这个很棒的小工具)。与cURL或wget不同, ApacheBench设计用于在Web服务器(任何类型的Web服务器!)上执行压力测试。 它也会产生大量的统计数据以下命令将发送一个 HTTP POST请求,包括文件 test.jpg 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)

其他提示

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

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

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

将脚本分叉100次,可能是在几台服务器上。只要确保系统管理员不认为你正在做DDoS或其他事情:)

不幸的是,这个答案仍然有点模糊,但希望它可以帮助你在正确的轨道上轻推你。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top