Amazon S3高CPU使用率和100个PutObject调用(.NET)

Don*_*o P 6 .net amazon-s3 amazon-web-services aws-sdk aws-sdk-net

我们使用Amazon S3存储多达500K的数据.我们在EC2实例上安装了一个.NET 4.0 Web服务,它使用500K数据调用PutObject.

问题是,当我们为这个服务分别向S3发出100多个同时调用(使用唯一的S3密钥),并且EC2实例CPU达到100%时.我们对Web服务进行了一些分析,结果表明,99%的处理时间是由AmazonS3Client.PutObject方法完成的.

我们已经尝试将S3客户端配置为使用HTTP(而不是默认的HTTPS),并且还使用S3密钥生成方案进行了一些操作,但没有任何帮助.这篇文章 亚马逊S3 PutObject很慢也没有帮助.

我们的S3密钥架构是:"111_ [递增ID] .txt"

如果我们使用较短的数据(例如小于1K),则不会发生这种广泛的CPU使用.

您能否为我们提供一些指导,以提高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...
            }
        }
Run Code Online (Sandbox Code Playgroud)

谢谢!

Séb*_*acq 0

我会尝试 TransferUtility 更高级别的类,而不是低级别的 PutObject 调用。http://docs.aws.amazon.com/sdkfornet1/latest/apidocs/html/T_Amazon_S3_Transfer_TransferUtility.htm