Por que o upload para o S3 é tão lento?

12

Estou usando o s3cmdupload para o 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

Estou carregando do Linode, que tem um limite de largura de banda de saída de 50 Mb / s de acordo com o suporte (aproximadamente 6 MB / s).

Por que estou obtendo velocidades tão baixas de upload para o S3 e como posso melhorá-las?


Atualizar:

O upload do mesmo arquivo via SCP para uma instância m1.medium EC2 (SCP do meu Linode para a unidade EBS da instância) fornece cerca de 44 Mb / s de acordo com iftop(qualquer compactação realizada pela cifra não é um fator).


Traceroute: Aqui está um traceroute para o servidor para o qual está sendo carregado (de acordo com tcpdump).

# traceroute s3-1-w.amazonaws.com.
traceroute para s3-1-w.amazonaws.com. (72.21.194.32), 30 saltos no máximo, pacotes de 60 bytes
 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 * * *

A latência parece razoável, pelo menos até o servidor parar de responder às solicitações de ping.

Tom Marthenal
fonte
Inicie a solução de problemas. Como é o uso da CPU durante o upload? Como é uma tracerouteaparência? A fila de envio do lado da conexão TCP está quase cheia ou quase vazia? Com alguns testes muito simples, você pode diminuir rapidamente o problema.
David Schwartz

Respostas:

9

Só porque você pode subir até 50mbps não significa que você sempre terá 50mbps; O caminho da rede para o S3 e a latência também são importantes.

Se você puder usar o upload em várias partes, poderá dividir um arquivo em várias partes e carregá-lo usando vários threads, possivelmente aumentando a velocidade de upload.

gekkz
fonte
1
O upload do mesmo arquivo para uma instância do m1.medium EC2 via SCP do meu Linode é executado em cerca de 44 Mb / s (de acordo com iftop, portanto, a compactação não importa), muito mais próxima do limite de largura de banda de saída de 50 Mb / s. Os uploads do S3 são cerca de um quinto mais rápidos. O mais recente s3cmdsuporta uploads em várias partes, mas não os carrega simultaneamente, mas consecutivamente. Existe um utilitário melhor para carregar no S3?
Tom Marthenal
Adicionei estatísticas de velocidade do SCP (minha instância Linode -> EC2) à minha pergunta.
Tom Marthenal
Você já tentou usar outras ferramentas semelhantes ao s3cmd para realizar testes? Isso é para determinar que não é realmente o s3cmd que é lento. Além disso, caso o s3cmd esteja fazendo o upload através de HTTPS, convém mudar para HTTP. Outra idéia é que o próprio S3 acontece mais lentamente para o upload, pois você parece não ter problemas com o EC2.
gekkz
4
Tente s3multiput.
EEAA
11

Apenas no caso de alguém tropeçar nisso ...

Eu tive um problema em que era muito lento o upload de uma instância ec2 para um bucket s3, e era realmente simples, a região do bucket! Eu estava usando instâncias ec2 no norte da califórnia, quando o balde foi criado como padrão, era muito lento para transferir, com o balde definido para o norte da califórnia era muito mais rápido.

rabs
fonte
1

Eu já vi muitos tópicos em um fórum sobre upload lento para o S3 usando vários clientes, como as ferramentas de linha de comando gratuitas (escritas em Python, btw) e comerciais.

Embora eu não tenha nenhuma evidência concreta para você, alternar o cliente S3 (por exemplo, Cloud Berry Explorer) pode resolver seu problema. Tente! :)

Valentin
fonte
3
Em um servidor sem cabeça? Não pense assim.
EEAA
Deixe-o tentar outro cliente antes de julgar. Há s3cp, por exemplo.
Valentin
+1. No EC2, a simples mudança do FileZilla para o CuteFTP fez uma melhoria de x30 perf.
Calvin1602