并行上传多个文件是个好主意吗?


2

我正在开发一个应用程序,将几个大文件从家庭网络上传到服务器。

我可以选择以下任何策略:

  1. 按顺序上传每个文件。
  2. 并行上传所有这些内容。

哪一个更快,注意到瓶颈是家庭网络。


4
试试两者并测量结果?
multithr3at3d

@ multithr3at3d我的测试将来自一个位置,我希望了解到处都有效的一般概念。
mans

@man-“无处不在”极为广泛。此外,你低估了这样的基准的有效性。什么适用于您的连接,基本上适用于所有人,无论如何
Ramhound

请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。
Ramhound

您正在上传到“服务器”。你对服务器了解多少?有没有可能它真的是一个服务器场,并行连接真的会转向不同的IP地址?
Scott

Answers:


-1

在您的情况下,可能需要按顺序上传。

消费者硬件并不总是能够运行许多并发连接,并且可能会停止/崩溃。如果限制同时文件的数量,那么上传并行将始终更快。

原因如下:

使用TCP / IP进行传输时,会发生以下情况:

第一个数据包被发送到目的地,连接等待确认包在发送下一个数据包之前返回。

然后它发送2个数据包并等待确认。然后它发送3,然后是4,然后是5等...它会不断增加数据包的数量,直到返回的确认数据包显示并非所有数据包都已收到。当发生这种情况时,速度会降低并再次尝试。

过去,当上述情况发生时,它将再次从1开始并加快速度。较新的技术首先将数据包的数量减半并再次尝试,逐渐提高速度。

考虑到额外的流量,可以减少这种传输的带宽,很可能在整个时间内不能保持全速。

如果同时传输2个或更多文件,则可以更有效地利用可用带宽。如果单个传输停止,并且速度显着降低,则存在释放带宽的时刻,该传输不使用该带宽。其他进程可能会占用带宽,从而使传输速度变慢。但是如果传输了2个或更多文件,则组合速度或多或少保持相同的可能性更大,这意味着即使其中一个传输速度变慢,另一个传输也可能获得剩余带宽。


1
“当发生这种情况时,速度会降低并再次尝试......增加速度......逐渐提高速度......速度显着降低” - 你提到的这个“速度”是什么?尽可能技术,我可以处理它。
sawdust

@sawdust Transferspeed。通过在小批量数据包中进行分块来完成传输。让我们说,从外行的角度来看,你可以获得恰好400个同时包的带宽。发送前1个数据包,因此有399个数据包的空间,但它们没有被利用。然后是2,然后是4然后是6然后是10然后是15 ... 400的400.现在,尝试了一批420,但确认说最后20个数据包没有到达。因此它重试那20个数据包并将数据包的数量限制为210.因此速度几乎降低了一半,因为可能有190个数据包的空间。
LPChip

2
你的解释没有意义。以太网IEEE 802.3无法传输 “400同时包” 。它不使用带宽来传输任何同时帧。 PHY协商时线速是固定的,但是你暗示TCP可以降低这个速度吗?
sawdust

4

并行上传通常会帮助他们更快地完成所有操作,因为如果您的某个上传TCP流因任何原因而停顿,那么您的其他上传TCP流将能够防止该带宽浪费。


基本上与我的答案相同,但更紧凑。 :P
LPChip

@LPChip “与我的答案基本相同” - 你的答案的第一句与这个答案相反。所以你认为相反的答案是一样的吗?
sawdust

1

从理论上讲,答案是:

六分之一;另外六个人。

原因是,如果您遇到带宽瓶颈,那么一次上传一个文件或一次上传多个文件无关紧要;你受到带宽的限制。

改变答案的是,如果对一侧的连接施加速度限制。这可以在一些常规内容服务器以及使用Torrenting协议的服务器上看到。

在这种情况下,如果施加的速度限制小于家庭侧的最大带宽,那么传输多个文件是有意义的,直到在家庭侧限制带宽的量。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.