Perché il caricamento su S3 è così lento?


12

Sto usando s3cmdper caricare su 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

Sto caricando da Linode, che ha un limite di larghezza di banda in uscita di 50 Mb / s in base al supporto (circa 6 MB / s).

Perché sto ottenendo velocità di caricamento così lente su S3 e come posso migliorarle?


Aggiornare:

Il caricamento dello stesso file tramite SCP in un'istanza EC2 m1.medium (SCP dal mio Linode all'unità EBS dell'istanza) fornisce circa 44 Mb / s in base a iftop(qualsiasi compressione effettuata dal codice non è un fattore).


Traceroute: ecco un traceroute sul server su cui si sta caricando (secondo tcpdump).

# traceroute s3-1-w.amazonaws.com.
traceroute su s3-1-w.amazonaws.com. (72.21.194.32), max 30 hop, pacchetti da 60 byte
 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 * * *

La latenza sembra ragionevole, almeno fino a quando il server non smette di rispondere alle richieste di ping.


Inizia la risoluzione dei problemi. Come appare l'utilizzo della CPU durante il caricamento? Che tracerouteaspetto ha? La coda di invio dalla tua parte della connessione TCP è quasi piena o quasi vuota? Con alcuni test molto semplici è possibile restringere rapidamente il problema.
David Schwartz,

Risposte:


9

Solo perché puoi andare fino a 50 Mbps non significa che otterrai sempre 50 Mbps; Anche il percorso di rete verso S3 e la latenza sono importanti.

Se sei in grado di utilizzare il caricamento in più parti, sarai in grado di suddividere un file in più pezzi e caricarlo utilizzando più thread, aumentando eventualmente la velocità di caricamento.


1
Il caricamento dello stesso file su un'istanza EC2 m1.medium tramite SCP dal mio Linode viene eseguito a circa 44 Mb / s (secondo iftop, quindi la compressione non ha importanza), che è molto più vicino al limite di larghezza di banda in uscita di 50 Mb / s. I caricamenti di S3 sono circa un quinto più veloci. Gli ultimi s3cmdsupportano i caricamenti in più parti, ma non li caricano contemporaneamente, ma consecutivamente. Esiste un'utilità migliore da caricare su S3?
Tom Marthenal,

Ho aggiunto le statistiche di velocità da SCP (il mio Linode -> istanza EC2) alla mia domanda.
Tom Marthenal,

Hai provato ad usare altri strumenti simili a s3cmd per eseguire test? Questo per determinare che in realtà non è lento s3cmd. Inoltre, nel caso in cui s3cmd stia caricando in qualche modo tramite HTTPS, potresti provare a passare a HTTP. Un'altra idea è che l'S3 stesso sia più lento nel caricamento, poiché sembra che tu non abbia problemi con EC2.
gekkz,

4
Prova s3multiput.
EEAA

11

Nel caso qualcuno si imbatti in questo ...

Ho avuto un problema in cui è stato davvero lento caricare da un'istanza ec2 a un bucket S3, risultando davvero semplice, la regione del bucket! Stavo usando istanze ec2 nella California del Nord, quando il bucket è stato creato come standard americano, è stato davvero lento il trasferimento, con il bucket impostato nella California del Nord è stato molto più veloce.


1

Ho visto molti thread in un forum sul caricamento lento su S3 usando vari client, come gli strumenti gratuiti della riga di comando (scritti in Python, btw) e quelli commerciali.

Anche se non ho prove concrete per te, cambiare il client S3 (ad esempio Cloud Berry Explorer) potrebbe risolvere il tuo problema. Provalo! :)


3
Su un server senza testa? Non la penso così.
EEAA

Lascialo provare un altro cliente prima di giudicare. C'è s3cp, per esempio.
Valentin

+1. Su EC2, il semplice passaggio da FileZilla a CuteFTP ha comportato un miglioramento di x30 perf.
Calvin1602,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.