6

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

问题是,当我们同时调用该服务(使用唯一的 S3 密钥)超过 100 个时,分别对 S3,EC2 实例 CPU 达到 100%。我们对 Web 服务进行了一些分析,它表明 AmazonS3Client.PutObject 方法占用了 99% 的处理时间。

我们已经尝试将 S3 客户端配置为使用 HTTP(而不是默认的 HTTPS),并且还尝试了一些 S3 密钥生成方案,但没有任何帮助。这篇文章 Amazon S3 PutObject is very slow也没有帮助。

我们的 S3 密钥架构是:“111_[incrementing 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...
            }
        }

谢谢!

4

1 回答 1

0

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

于 2014-03-19T16:52:09.603 回答