2012-11-14 12 views
5

Amazon S3を使用して最大500Kのデータを格納しています。 EC2インスタンスに.NET 4.0 Webサービスがインストールされており、PutObjectを500Kのデータで呼び出します。100個のPutObject呼び出しでAmazon S3のCPU使用率が高くなる(.NET)

問題は、このサービスにS3(固有のS3キーを使用)を100回以上同時に呼び出すと、それぞれS3になり、EC2インスタンスCPUが100%に達することです。 Webサービスでいくつかのプロファイリングを行い、処理時間の99%がAmazonS3Client.PutObjectメソッドによって取得されたことを示しています。

私たちはS3クライアントをHTTP(デフォルトのHTTPSではなく)を使用するように設定しようとしましたが、S3キー生成方式で少し再生しましたが、何の助けにもなりませんでした。この記事Amazon S3 PutObject is very slowも役に立ちませんでした。

私たちのS3キースキーマは次のとおりです。「111_ [インクリメントID] .txtの」

我々は短いデータを使用する場合、この大規模なCPU使用率が発生しません - 1K未満など。

CPUのパフォーマンスや見た目を改善するために何ができるか教えてください。

そして、ここではその呼び出しのソースコードです:

string fileName = "111_" + Id + ".txt"; 
using (AmazonS3 client = Amazon.AWSClientFactory.CreateAmazonS3Client(RegionEndpoint.XXXX)) 
     { 
      try 
      { 
PutObjectRequest request = new PutObjectRequest(); 
request.WithContentBody(dataRequest.Base64Data) 
       .WithBucketName(bucketName) 
       .WithKey(fileName); 

S3Response response = client.PutObject(request); 
response.Dispose(); 
      } 
      catch (AmazonS3Exception amazonS3Exception) 
      { 
       //Handle exceptiom... 
      } 
     } 

ありがとう!

+0

[この質問](https://forums.aws.amazon.com/thread.jspa?messageID=400164&tstart=0)の回答が参考になる場合があります。 –

+0

私はネットの経験はありませんが、この記事を読んでくださいhttp://improve.dk/archive/2011/11/07/pushing-the-limits-of-amazon-s3-upload-performance.aspx私は、 base64呼び出しによってCPU負荷が発生している可能性があります。その場で生成されない500キロバイトの文字列で試すことができますか? – tix3

+0

SDKを使用している場合は、ソースを見て、マルチパートアップロードの処理方法を把握してください。パフォーマンスの問題を引き起こすチャンクサイズのケースのようです。 また、この質問に完全には関連していない可能性がありますが、それに従うのに便利なオブジェクトの命名についての別の注意:http://aws.typepad.com/aws/2012/03/amazon-s3-performance-tips-tricks-seattle- hiring-event.html – Keshi

答えて

関連する問題