我正在使用下面的代码将文件放入一个S3存储器中。我发现它非常慢。秒表显示18秒+。有什么建议或其他经验吗?
// upload the file to S3
AmazonS3 client = Amazon.AWSClientFactory.CreateAmazonS3Client(accessKey, secretAccessKey);
PutObjectRequest request = new PutObjectRequest();
FileStream fs = new FileStream(sourceFileName, FileMode.Open);
request.WithInputStream(fs);
request.WithBucketName(bucketName);
request.WithKey(keyName);
Stopwatch stp1 = new Stopwatch();
stp1.Start();
client.PutObject(request);
stp1.Stop();
fs.Close();
这段代码是C#.我用的是亚马逊.net的sdk.
该文件只有56K的大小和我的上传带宽是1.87Mbps。
3条答案
按热度按时间72qzrwbm1#
这听起来很像我最近遇到的一个问题,是由Windows上“Internet选项”中的自动代理检测设置引起的。
Amazon SDK使用
WebRequest
来发出HTTP请求,默认情况下WebRequest
遵循计算机的“Internet选项”设置来检测本地代理。幸运的是WebRequest
有一个静态属性WebRequest.DefaultWebProxy
,当设置为null
时,会删除自动代理检测。您只需在开始使用
AmazonS3
之前将其设置为null
即可:值得注意的是,这个静态属性只需要在每个应用程序域中设置一次,而不是每次创建
AmazonS3
对象时都需要设置。替代方法:
如果您不介意重新配置计算机,请转至:
并取消选中“自动检测设置”。如果使用此方法,则根本不需要设置
DefaultWebProxy
属性。更多信息:
当我遇到这个问题时,我就SO提出了以下问题:
How to turn off the automatic proxy detection in the
AmazonS3
object?如果你感兴趣的话,它比我的答案更详细。
zzlelutf2#
您需要更改AmazonS3Config上的缓冲区大小
g6ll5ycj3#
我的最新项目是基于**.Net 6和AWSSDK.S3**Nuget包构建的。
应用程序启动速度极快,但第一次使用/示例创建(通过注入)大约需要8到10秒。
对我来说,成功的秘诀是在
Program.cs
中设置DefaultConfigurationMode
。希望这对以后的人有帮助!