Ist es eine gute Idee, mehrere Dateien parallel hochzuladen?

362
mans

Ich entwickle eine Anwendung, um mehrere große Dateien von einem Heimnetzwerk auf einen Server hochzuladen.

Ich kann eine der folgenden Strategien auswählen:

  1. Laden Sie jede Datei nacheinander hoch.
  2. Laden Sie alle parallel hoch.

Welcher ist schneller, und stellt fest, dass der Engpass das Heimnetzwerk ist.

2
Probieren Sie beide aus und messen Sie die Ergebnisse. multithr3at3d vor 6 Jahren 4
@ multithr3at3d Mein Test würde von einer Position aus erfolgen und ich schaue nach dem allgemeinen Konzept, das überall gültig wäre. mans vor 6 Jahren 0
@man - "überall" ist extrem breit. Außerdem unterschätzen Sie die Gültigkeit eines solchen Benchmarks. Was für Ihre Verbindung gilt, würde grundsätzlich für jeden gelten Ramhound vor 6 Jahren 0
Bearbeiten Sie die Frage, um sie auf ein bestimmtes Problem zu beschränken, und zwar so detailliert, dass eine angemessene Antwort gefunden wird. Ramhound vor 6 Jahren 0
Sie laden auf einen Server hoch. Was weißt du über den Server? Gibt es eine Möglichkeit, dass es sich tatsächlich um eine Serverfarm handelt, in der die parallelen Verbindungen tatsächlich zu verschiedenen IP-Adressen gehen? Scott vor 6 Jahren 0
@Scott Es handelt sich tatsächlich um eine Serverfarm (Google Cloud Server). Macht es irgendwelche Änderungen? mans vor 6 Jahren 0

3 Antworten auf die Frage

4
Spiff

Durch das parallele Hochladen können Sie alle schneller ans Ziel kommen. Wenn einer Ihrer TCP-Upload-Streams aus irgendeinem Grund blockiert wird, können die anderen TCP-Streams des Uploads verhindern, dass diese Bandbreite verschwendet wird.

Im Grunde die gleiche Antwort wie meine, aber kompakter. : P LPChip vor 6 Jahren 0
@LPChip * "Im Grunde die gleiche Antwort wie meine" * - Der erste Satz Ihrer Antwort ist das Gegenteil von dieser Antwort. Sie glauben also, dass entgegengesetzte Antworten gleich sind? sawdust vor 6 Jahren 0
1
Damian T.

Theoretisch wäre die Antwort:

Sechs von eins; ein halbes Dutzend von einem anderen.

Der Grund ist, wenn Sie einen Engpass bei der Bandbreite erreichen, ist es egal, ob Sie Dateien einzeln oder mehrere gleichzeitig hochladen. Sie sind durch die Bandbreite eingeschränkt.

Die Antwort ändert sich, wenn auf einer Seite eine Geschwindigkeitsbeschränkung für Verbindungen festgelegt ist. Dies ist auf einigen regulären Content-Servern zu sehen sowie auf solchen, die das Torrenting-Protokoll verwenden.

Wenn in diesem Fall die Geschwindigkeitsbeschränkung unter der maximalen Bandbreite auf der Homepage liegt, ist es sinnvoll, mehrere Dateien zu übertragen, bis die Bandbreite auf der Home-Seite begrenzt ist.

-1
LPChip

In Ihrem Fall kann ein sequenzieller Upload erforderlich sein.

Consumer-Hardware ist nicht immer in der Lage, viele gleichzeitige Verbindungen herzustellen und kann zum Absturz bringen. Wenn Sie die Anzahl der gleichzeitigen Dateien begrenzen, ist der parallele Upload immer schneller.

Der Grund ist wie folgt:

Wenn Sie eine Übertragung mit TCP / IP durchführen, geschieht Folgendes:

Zuerst wird ein Paket an das Ziel gesendet, und die Verbindung wartet, bis ein Bestätigungspaket zurückgegeben wird, bevor es das nächste Paket sendet.

Es sendet dann 2 Pakete und wartet auf die Bestätigung. Dann sendet er 3, dann 4, dann 5 usw. Die Anzahl der Pakete wird so lange erhöht, bis das zurückgegebene Bestätigungspaket zeigt, dass nicht alle Pakete empfangen wurden. Wenn dies geschieht, wird die Geschwindigkeit reduziert und erneut versucht.

Früher war es so, dass es bei 1 wieder bei 1 anfing und die Geschwindigkeit erhöhte. Eine neuere Technologie halbiert die Anzahl der Pakete zuerst und versucht es erneut, wobei die Geschwindigkeit schrittweise erhöht wird.

Da bei zusätzlichem Verkehr die Bandbreite für diese Übertragung reduziert werden kann, ist es sehr wahrscheinlich, dass die volle Geschwindigkeit nicht die ganze Zeit aufrechterhalten wird.

Wenn zwei oder mehr Dateien gleichzeitig übertragen werden, wird die verfügbare Bandbreite effizienter genutzt. Wenn eine einzelne Übertragung zum Stillstand kommt und die Geschwindigkeit erheblich reduziert wird, gibt es einen Moment, in dem Bandbreite freigegeben wird, die von dieser Übertragung nicht verwendet wird. Andere Prozesse könnten diese Bandbreite beanspruchen und die Übertragung noch langsamer machen. Wenn jedoch zwei oder mehr Dateien übertragen werden, ist es wahrscheinlicher, dass die kombinierte Geschwindigkeit mehr oder weniger gleich bleibt. Dies bedeutet, dass selbst wenn eine der Übertragungen langsamer wird, die andere Übertragung wahrscheinlich die verbleibende Bandbreite erhält.

* "Wenn das passiert, wird die Geschwindigkeit reduziert und erneut versucht ... die Geschwindigkeit zu erhöhen ... die Geschwindigkeit schrittweise zu erhöhen ... die Geschwindigkeit wird erheblich verringert" * - Auf welche "Geschwindigkeit" beziehen Sie sich? Holen Sie sich so technisch wie Sie möchten, ich kann damit umgehen. sawdust vor 6 Jahren 1
@sawdust Transfspeed. Eine Übertragung wird durchgeführt, indem das Paket in kleinen Paketen aufgeteilt wird. Sagen wir, in Laien ausgedrückt, Sie haben Bandbreite für genau 400 simultane Pakete. Zuerst wird ein Paket gesendet, also gibt es Platz für 399 weitere Pakete, die jedoch nicht verwendet werden. Dann 2, dann 4 dann 6 dann 10 dann 15 .. 400 von 400. Jetzt wird ein Stapel von 420 versucht, aber die Bestätigung sagt aus, dass die letzten 20 Pakete nicht angekommen sind. Es werden also diese 20 Pakete erneut versucht und die Anzahl der Pakete auf 210 begrenzt. Die Geschwindigkeit wird also fast um die Hälfte reduziert, da 190 weitere Pakete vorhanden sein könnten. LPChip vor 6 Jahren 0
Ihre Erklärung ergibt keinen Sinn. Ethernet IEEE 802.3 kann nicht "400 gleichzeitig Pakete" * übertragen. Die Bandbreite wird nicht zur Übertragung von gleichzeitigen Frames verwendet. Die Drahtgeschwindigkeit ist fest, wenn die PHYs verhandeln, aber Sie implizieren, dass TCP diese Geschwindigkeit herabstufen kann? sawdust vor 6 Jahren 2