我们使用 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...
}
}
谢谢!