我使用以下代码将文件放入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();
Run Code Online (Sandbox Code Playgroud)
这段代码是C#.我正在使用亚马逊.net sdk.
该文件的大小仅为56K,我的上传带宽为1.87Mbps.
这听起来与我最近遇到的问题非常相似,这是由Windows上"Internet选项"中的自动代理检测设置引起的.
Amazon SDK用于WebRequest
发出HTTP请求,默认情况下WebRequest
遵循用于检测本地代理的计算机"Internet选项"设置.幸运的是WebRequest
有一个静态属性WebRequest.DefaultWebProxy
,当设置null
为时,会删除自动代理检测.
您需要做的就是null
在开始使用之前将其设置为AmazonS3
:
WebRequest.DefaultWebProxy = null; // here
AmazonS3 client = Amazon.AWSClientFactory.CreateAmazonS3Client(accessKey, secretAccessKey);
[...]
Run Code Online (Sandbox Code Playgroud)
值得注意的是,这个静态属性只需要为每个应用程序域设置一次,而不是每次都要创建一个AmazonS3
对象.
替代方法:
如果你不介意重新配置机器,那就去:
Windows Control Panel > Internet Options > Connections > Lan Settings
Run Code Online (Sandbox Code Playgroud)
并取消选中"自动检测设置".如果使用此方法,则根本不需要设置DefaultWebProxy
属性.
更多信息:
当我遇到这个问题时,我在SO上询问了以下问题:
如果您感兴趣,它的详细信息比我的答案更多.
归档时间: |
|
查看次数: |
4267 次 |
最近记录: |