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

私はLinodeからアップロードしています。これは、サポートに応じて50 Mb / sの発信帯域幅の上限があります(おおよそ6 MB / s)。

S3へのアップロード速度がこのように遅いのはなぜですか、どうすれば改善できますか?


更新:

SCPを介して同じファイルをm1.medium EC2インスタンス(LinodeからインスタンスのEBSドライブへのSCP)にアップロードすると、約44 Mb / sが得られますiftop(暗号による圧縮は要因ではありません)。


Traceroute: アップロード先のサーバーへの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.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 * * *

少なくともサーバーがping要求への応答を停止するまで、待機時間は妥当に見えます。


トラブルシューティングを開始します。アップロード中のCPU使用率はどのように見えますか?どのtracerouteように見えますか?TCP接続のあなたの側の送信キューはほぼ一杯か、ほとんど空ですか?いくつかの非常に簡単なテストで、問題をすばやく絞り込むことができます。
デビッドシュワルツ

回答:


9

最大50 Mbpsにできるからといって、常に50 Mbpsを取得できるわけではありません。S3へのネットワークパスと遅延も重要です。

マルチパートアップロードを使用できる場合は、ファイルを複数の部分に分割し、複数のスレッドを使用してアップロードすることができます。これにより、アップロード速度が向上する可能性があります。


1
LinodeからSCPを介して同じファイルをm1.medium EC2インスタンスにアップロードすると、約44 Mb / sで実行されます(したがってiftop、圧縮は重要ではありません)。これは、50 Mb / sの発信帯域幅の上限にかなり近いです。S3のアップロードは約5分の1の速度です。最新版はs3cmdマルチパートアップロードをサポートしていますが、同時にアップロードするのではなく、連続してアップロードします。S3にアップロードするより良いユーティリティはありますか?
トムマーシャル

SCP(私のLinode-> EC2インスタンス)からの速度統計を質問に追加しました。
トムマーセナル

s3cmdに似た他のツールを使用してテストを実行したことがありますか?これは、実際に遅いのはs3cmdではないと判断するためです。また、s3cmdが何らかの方法でHTTPSを介してアップロードしている場合、それをHTTPに切り替えてみてください。もう1つのアイデアは、EC2に問題がないように見えるため、S3自体のアップロードが遅くなることです。
-gekkz

4
s3multiputを試してください。
EEAA

11

万が一これにつまずいたら…。

ec2インスタンスからs3バケットへのアップロードが本当に遅く、バケットの領域であることが非常に簡単であることが判明した問題がありました!北カリフォルニアでec2インスタンスを使用していました。標準としてバケットが作成されたとき、転送が非常に遅く、バケットが北カリフォルニアに設定されていたため、より高速でした。


1

私は、無料のコマンドラインツール(Python、btwで書かれた)や商用ツールなど、さまざまなクライアントを使用したS3への遅いアップロードに関するフォーラムで多くのスレッドを見てきました。

明確な証拠はありませんが、S3クライアント(Cloud Berry Explorerなど)を切り替えると問題が解決する場合があります。それを試してみてください!:)


3
ヘッドレスサーバーで?そうは思わないでください。
EEAA

判断する前に、別のクライアントに試してもらいます。たとえば、s3cpがあります。
バレンティン

+1。EC2では、FileZillaからCuteFTPに切り替えるだけで、パフォーマンスが30倍向上しました。
Calvin1602 14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.