S3에 업로드하는 것이 왜 그렇게 느립니까?


12

s3cmdS3에 업로드하는 데 사용 하고 있습니다.

# 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

지원에 따라 나가는 대역폭이 50Mb / s (약 6MB / s) 인 Linode에서 업로드하고 있습니다.

S3에 업로드 속도가 느린 이유는 무엇이며 어떻게 개선 할 수 있습니까?


최신 정보:

SCP를 통해 m1.medium EC2 인스턴스 (내 Linode에서 인스턴스의 EBS 드라이브로의 SCP)에 동일한 파일을 업로드하면 약 44Mb / s가됩니다 iftop(암호화에 의한 압축은 중요하지 않습니다).


Traceroute : 다음은 업로드중인 서버에 대한 추적 경로입니다 (에 따라 tcpdump).

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

최소한 서버가 핑 요청에 대한 응답을 중지 할 때까지 지연 시간이 합리적으로 보입니다.


문제 해결을 시작하십시오. 업로드하는 동안 CPU 사용량은 어떻게됩니까? 어떤 traceroute모습입니까? TCP 연결 쪽의 송신 큐가 거의 찼거나 거의 비어 있습니까? 몇 가지 매우 간단한 테스트를 통해 문제를 신속하게 좁힐 수 있습니다.
David Schwartz

답변:


9

50mbps까지 올라갈 수 있다고해서 항상 50mbps를 얻을 수있는 것은 아닙니다. 대기 시간뿐만 아니라 S3에 대한 네트워크 경로도 중요합니다.

멀티 파트 업로드를 사용할 수있는 경우 파일을 여러 조각으로 나누고 여러 스레드를 사용하여 업로드하여 업로드 속도를 높일 수 있습니다.


1
내 Linode에서 SCP를 통해 동일한 파일을 m1.medium EC2 인스턴스에 업로드하면 약 44Mb / s로 실행 iftop되므로 압축은 중요하지 않습니다. 이는 50Mb / s의 나가는 대역폭 제한에 훨씬 가깝습니다. S3 업로드 속도는 약 5 분의 1입니다. 최신 s3cmd은 멀티 파트 업로드를 지원하지만 동시에 업로드하지 않고 연속적으로 업로드합니다. S3에 업로드하기에 더 좋은 유틸리티가 있습니까?
Tom Marthenal

SCP (내 Linode-> EC2 인스턴스)의 속도 통계를 내 질문에 추가했습니다.
Tom Marthenal

s3cmd와 비슷한 다른 도구를 사용하여 테스트를 수행 했습니까? 이것은 실제로 s3cmd가 느린 것이 아니라는 것을 결정하는 것입니다. 또한 s3cmd가 어떻게 든 HTTPS를 통해 업로드하는 경우 HTTP로 전환하려고 할 수 있습니다. 또 다른 아이디어는 S3 자체가 업로드 속도가 느리다는 것입니다. EC2에는 아무런 문제가없는 것 같습니다.
gekkz

4
s3multiput을 시도하십시오.
EEAA

11

누군가가 이것에 걸려 넘어 질 경우를 대비해서 ...

EC2 인스턴스에서 s3 버킷으로 업로드하는 것이 실제로 느린 문제가 발생했습니다. 버킷 영역은 정말 간단합니다. 나는 북 캘리포니아에서 ec2 인스턴스를 사용하고 있었고, 버킷이 표준으로 생성되었을 때 버킷이 북쪽 캘리포니아로 설정되어 힙이 더 빨랐습니다.


1

포럼에서 무료 명령 줄 도구 (Python, btw로 작성) 및 상용 도구와 같은 다양한 클라이언트를 사용하여 S3에 느리게 업로드하는 방법에 대한 많은 스레드를 보았습니다.

확실한 증거는 없지만 S3 클라이언트 (예 : Cloud Berry Explorer)를 전환하면 문제가 해결 될 수 있습니다. 시도 해봐! :)


3
헤드리스 서버에서? 그렇게 생각하지 마십시오.
EEAA

판단하기 전에 다른 클라이언트를 사용해 보도록하십시오. 예를 들어 s3cp가 있습니다.
Valentin

+1. EC2에서는 FileZilla에서 CuteFTP로 간단히 전환하면 성능이 30 배 향상되었습니다.
Calvin1602
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.