Pourquoi le téléchargement vers S3 est-il si lent?


12

J'utilise s3cmdpour télécharger sur 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

Je télécharge depuis Linode, qui a une limite de bande passante sortante de 50 Mo / s selon le support (environ 6 Mo / s).

Pourquoi la vitesse de téléchargement vers S3 est-elle si lente et comment puis-je les améliorer?


Mise à jour:

Le téléchargement du même fichier via SCP vers une instance m1.medium EC2 (SCP de mon Linode vers le lecteur EBS de l'instance) donne environ 44 Mb / s selon iftop(toute compression effectuée par le chiffrement n'est pas un facteur).


Traceroute: voici une traceroute vers le serveur vers lequel il est téléchargé (selon tcpdump).

# traceroute s3-1-w.amazonaws.com.
traceroute vers s3-1-w.amazonaws.com. (72.21.194.32), 30 sauts maximum, paquets de 60 octets
 1207.99.1.13 (207.99.1.13) 0,635 ms 0,743 ms 0,723 ms
 2207.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
dix * * *
11 * * *
12 * * *
13 * * *
14 * * *
15 * * *
16 * * *
17 * * *
18 * * *
19 * * *
20 * * *
21 * * *
22 * * *
23 * * *
24 * * *
25 * * *
26 * * *
27 * * *
28 * * *
29 * * *
30 * * *

La latence semble raisonnable, au moins jusqu'à ce que le serveur cesse de répondre aux requêtes ping.


Commencez le dépannage. À quoi ressemble votre utilisation du processeur pendant le téléchargement? À quoi ressemble un traceroute? La file d'attente d'envoi de votre côté de la connexion TCP est-elle presque pleine ou presque vide? Avec quelques tests très simples, vous pouvez rapidement réduire le problème.
David Schwartz

Réponses:


9

Ce n'est pas parce que vous pouvez aller jusqu'à 50 Mbps que vous obtiendrez toujours 50 Mbps; Le chemin réseau vers S3 ainsi que la latence sont également importants.

Si vous pouvez utiliser le téléchargement en plusieurs parties, vous pourrez décomposer un fichier en plusieurs morceaux et le télécharger à l'aide de plusieurs threads, augmentant éventuellement la vitesse de téléchargement.


1
Le téléchargement du même fichier vers une instance m1.medium EC2 via SCP depuis mon Linode tourne à environ 44 Mb / s (selon iftop, donc la compression n'a pas d'importance), ce qui est beaucoup plus proche de la limite de bande passante sortante de 50 Mb / s. Les téléchargements S3 sont environ un cinquième plus rapides. La dernière version prend en s3cmdcharge les téléchargements en plusieurs parties, mais ne les télécharge pas simultanément, mais à la place. Existe-t-il un meilleur utilitaire pour télécharger vers S3?
Tom Marthenal

J'ai ajouté des statistiques de vitesse de SCP (mon instance Linode -> EC2) à ma question.
Tom Marthenal

Avez-vous essayé d'utiliser d'autres outils similaires à s3cmd pour effectuer des tests? C'est pour déterminer que ce n'est pas réellement s3cmd qui est lent. De plus, dans le cas où s3cmd est en train de télécharger via HTTPS, vous voudrez peut-être essayer de le passer à HTTP. Une autre idée est que S3 lui-même se produit plus lentement à télécharger, car vous semblez n'avoir aucun problème avec EC2.
gekkz

4
Essayez s3multiput.
EEAA

11

Juste au cas où quelqu'un trébucherait là-dessus ...

J'ai eu un problème où il était très lent de télécharger à partir d'une instance ec2 vers un compartiment s3, ce qui s'est avéré être très simple, la région du compartiment! J'utilisais des instances ec2 en Californie du Nord, lorsque le seau a été créé comme standard américain, il était vraiment lent à transférer, avec le seau réglé en Californie du Nord, il était beaucoup plus rapide.


1

J'ai vu de nombreuses discussions dans un forum sur le téléchargement lent vers S3 en utilisant divers clients, tels que les outils de ligne de commande gratuits (écrits en Python, btw) et commerciaux.

Bien que je n'ai aucune preuve tangible pour vous, le changement de client S3 (par exemple Cloud Berry Explorer) pourrait résoudre votre problème. Essayez! :)


3
Sur un serveur sans tête? Ne pense pas.
EEAA

Laissez-le essayer un autre client avant de juger. Il y a par exemple s3cp.
Valentin

+1. Sur EC2, le simple passage de FileZilla à CuteFTP a permis d'améliorer la performance de x30.
Calvin1602
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.