2017-09-18 20 views
2

TransferManagerを使用して、一部のファイルをS3にアップロードしています。Java AWS SDK S3アップロードのパフォーマンス

TransferManager tm = new TransferManager(creds); 
    t.upload = tm.upload(bucket, k.key, new File(k.path)); 

唯一の問題は、約1MB/sのアップロードしか取得できないことです。同時に10種類のファイルアップロードを実行すると、それぞれ約100KB /秒になります。 AWSコンソールを使用してファイルをドラッグアンドドロップすると、接続速度が8MB/sと予想されます。

私はus-east-1ですが、私がus-west-2でテストすると、スピードが向上します(私はオレゴン州にいる)が、まだAWSコンソールでは得られないものです。

私はJavaのアップロードとAWSコンソール(最新のChromeを使用)に同じWindows 7ノートパソコンを使用しています。

+1

[TransferManagerConfiguration](http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/transfer/TransferManagerConfiguration.html)を使用して、 'setMultipartUploadThreshold'を試してパフォーマンスが向上します。 –

答えて

2

最大スレッドを変更すると(これまでのパフォーマンスは64を超えていませんでした; it seems the default was 10)、このトリックを実行したようです。あなたはそのようにそれを行うことができます:私はTransferManagerに別のコンストラクタを使用していたが、これは何かを再加工する必要はありませんでしたどのように

TransferManager tm = new TransferManager(
      new AmazonS3Client(creds), 
      Executors.newFixedThreadPool(THREAD_COUNT)); 

は注意(すなわち、それはドロップイン交代で入りました)。

関連する問題