Warum ist das Hochladen auf S3 so langsam?

12

Ich verwende s3cmdzum Hochladen auf S3:

# s3cmd put 1gb.bin s3://my-bucket/1gb.bin
1gb.bin -> s3://my-bucket/1gb.bin  [1 of 1]
  366706688 of 1073741824    34% in  371s   963.22 kB/s

Ich lade von Linode hoch, das laut Support eine ausgehende Bandbreitenbeschränkung von 50 MB / s hat (ungefähr 6 MB / s).

Warum bekomme ich so langsame Upload-Geschwindigkeiten für S3 und wie kann ich sie verbessern?


Aktualisieren:

Das Hochladen derselben Datei über SCP auf eine m1.medium EC2-Instanz (SCP von meinem Linode auf das EBS-Laufwerk der Instanz) ergibt ungefähr 44 MBit / s iftop(jegliche Komprimierung durch die Verschlüsselung ist kein Faktor).


Traceroute: Hier ist eine Traceroute zu dem Server, zu dem es hochgeladen wird (entsprechend tcpdump).

# traceroute s3-1-w.amazonaws.com.
traceroute zu s3-1-w.amazonaws.com. (72,21,194,32), maximal 30 Hops, 60 Byte-Pakete
 1 207.99.1.13 (207.99.1.13) 0.635 ms 0.743 ms 0.723 ms
 2 207.99.53.41 (207.99.53.41) 0.683 ms 0.865 ms 0.915 ms
 3 vlan801.tbr1.mmu.nac.net (209.123.10.9) 0.397 ms 0.541 ms 0.527 ms
 4 0.e1-1.tbr1.tl9.nac.net (209.123.10.102) 1.400 ms 1.481 ms 1.508 ms
 5 0.gi-0-0-0.pr1.tl9.nac.net (209.123.11.62) 1.602 ms 1.677 ms 1.699 ms
 6 equinix02-iad2.amazon.com (206.223.115.35) 9.393 ms 8.925 ms 8.900 ms
 7 72.21.220.41 (72.21.220.41) 32.610 ms 9.812 ms 9.789 ms
 8 72.21.222.141 (72.21.222.141) 9.519 ms 9.439 ms 9.443 ms
 9 72.21.218.3 (72.21.218.3) 10.245 ms 10.202 ms 10.154 ms
10 * * *
11 * * *
12 * * *
13 * * *
14 * * *
15 * * *
16 * * *
17 * * *
18 * * *
19 * * *
20 * * *
21 * * *
22 * * *
23 * * *
24 * * *
25 * * *
26 * * *
27 * * *
28 * * *
29 * * *
30 * * *

Die Latenz sieht vernünftig aus, zumindest bis der Server nicht mehr auf Ping-Anfragen reagiert.

Tom Marthenal
quelle
Starten Sie die Fehlerbehebung. Wie sieht Ihre CPU-Auslastung beim Hochladen aus? Wie sieht ein tracerouteaus? Ist die Sendewarteschlange auf Ihrer Seite der TCP-Verbindung fast voll oder fast leer? Mit ein paar sehr einfachen Tests können Sie das Problem schnell eingrenzen.
David Schwartz

Antworten:

9

Nur weil Sie bis zu 50 MBit / s erreichen können, bedeutet dies nicht, dass Sie immer 50 MBit / s erhalten. Der Netzwerkpfad zu S3 sowie die Latenz sind ebenfalls wichtig.

Wenn Sie einen mehrteiligen Upload verwenden können, können Sie eine Datei in mehrere Teile aufteilen und mithilfe mehrerer Threads hochladen, wodurch möglicherweise die Upload-Geschwindigkeit erhöht wird.

gekkz
quelle
1
Das Hochladen derselben Datei auf eine m1.medium EC2-Instanz über SCP von meinem Linode aus erfolgt mit ungefähr 44 Mbit / s (laut iftop, also spielt die Komprimierung keine Rolle), was der ausgehenden Bandbreitenbeschränkung von 50 Mbit / s viel näher kommt. S3-Uploads sind etwa ein Fünftel so schnell. Die neuesten Versionen s3cmdunterstützen mehrteilige Uploads, laden diese jedoch nicht gleichzeitig, sondern nacheinander hoch. Gibt es ein besseres Dienstprogramm zum Hochladen auf S3?
Tom Marthenal
Ich habe meiner Frage eine Geschwindigkeitsstatistik von SCP (meine Linode -> EC2-Instanz) hinzugefügt.
Tom Marthenal
Haben Sie versucht, mit anderen Tools, die s3cmd ähneln, Tests durchzuführen? Dies ist, um festzustellen, dass es nicht wirklich s3cmd ist, das langsam ist. Falls s3cmd auf irgendeine Weise über HTTPS hochgeladen wird, möchten Sie möglicherweise versuchen, dies auf HTTP umzustellen. Eine andere Idee ist, dass S3 selbst nur langsamer hochgeladen wird, da Sie anscheinend keine Probleme mit EC2 haben.
gekkz
4
Versuchen Sie es mit s3multiput.
EEAA
11

Nur für den Fall, dass jemand darüber stolpert ...

Ich hatte ein Problem, bei dem das Hochladen von einer ec2-Instanz in einen s3-Bucket sehr langsam war. Es stellte sich als sehr einfach heraus, die Region des Bucket! Ich habe ec2-Instanzen in Nordkalifornien verwendet. Als der Bucket gemäß unserem Standard erstellt wurde, war die Übertragung sehr langsam. In Nordkalifornien war der Bucket sehr viel schneller.

rabs
quelle
1

Ich habe viele Threads in einem Forum über langsames Hochladen auf S3 mit verschiedenen Clients gesehen, z. B. die kostenlosen Befehlszeilentools (geschrieben in Python, btw) und kommerzielle.

Obwohl ich keine konkreten Beweise für Sie habe, könnte ein Wechsel des S3-Clients (z. B. Cloud Berry Explorer) Ihr Problem lösen. Versuch es! :)

Valentin
quelle
3
Auf einem kopflosen Server? Glaube nicht
EEAA
Lassen Sie ihn / sie einen anderen Kunden vor der Beurteilung versuchen. Es gibt zum Beispiel s3cp.
Valentin
+1. Bei EC2 führte der einfache Wechsel von FileZilla zu CuteFTP zu einer Verbesserung der x30-Leistung.
Calvin1602