2012-11-14 31 views
5

500K veri depolamak için Amazon S3 kullanıyoruz. EC2 örneğinde kurulu bir .NET 4.0 web hizmetimiz var, bu da PutObject çağrısını 500K veriyle yapıyor.Amazon S3 100 PutObject çağrısı ile yüksek CPU kullanımı (.NET)

sorun olduğunu biz S3 sırasıyla bu hizmete (benzersiz S3 tuşlarıyla) 100'den fazla eşzamanlı çağrı yapmak ve EC2 örneği CPU% 100 isabet zaman. Web hizmetinde bir profil oluşturduk ve işlem süresinin% 99'unun AmazonS3Client.PutObject yöntemi tarafından alındığını gösteriyor.

Biz (yerine varsayılan HTTPS) HTTP kullanmaya S3 istemcisi yapılandırılması çalıştı ve aynı zamanda S3 anahtarları nesil şeması ile biraz oynadı, ama hiçbir şey yardımcı olduk. Bu makale Amazon S3 PutObject is very slow ya da yardımcı olmadı.

Bizim S3 anahtar şeması yer almaktadır: "111_ [artan ID] .txt"

biz daha kısa verileri kullanmak, bu kapsamlı CPU kullanımı olmaz - 1K daha az gibi.

Bize CPU performansını artırmak için yapılabilir ya da nereye bakmak ne bazı rehberlik verebilir misiniz?

Ve işte o çağrı için kaynak kod:

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... 
      } 
     } 

teşekkürler!

+0

Bunu [bu soru] (https://forums.aws.amazon.com/thread.jspa?messageID=400164&tstart=0) yardımcı cevaplarını bulabilirsiniz. –

+0

.net deneyimim yok ama bu makaleyi okuyorsunuz http://improve.dk/archive/2011/11/07/pushing-the-limits-of-amazon-s3-upload-performance.aspx Bir önsezim var. base64 çağrısı CPU yüküne neden oluyor olabilir. Anında oluşturulmayan 500 kbyte dizeyle deneyebilir misiniz? – tix3

+0

SDK'yı kullanıyorsanız, çok parçalı yüklemenin nasıl ele alındığını bulmak için kaynağa bakın. Neredeyse, performansla ilgili sorunlara neden olan bir yığın boyutları gibi görünüyor. Ayrıca tamamen bu soruya ilişkin ama yararlı olmayabilir nesneleri adlandırma hakkında başka not takip etmek: http://aws.typepad.com/aws/2012/03/amazon-s3-performance-tips-tricks-seattle- işe alım-event.html – Keshi

cevap