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.


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.


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.


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! :)


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.