首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >浏览器中的AWS-console和AmazonSDK for java上传文件的时间有很大的差异

浏览器中的AWS-console和AmazonSDK for java上传文件的时间有很大的差异
EN

Stack Overflow用户
提问于 2014-06-17 15:56:18
回答 1查看 104关注 0票数 1

我正在为亚马逊s3编写简单的上传程序,并发现了一些问题。如果我尝试从aws-console上传文件(例如tulips.jpg)到存储桶,我会在2-3秒内完成,但如果我在我的上传器中尝试,时间大约是30秒。这是我的上传函数

代码语言:javascript
运行
复制
public class AWSfunctions implements Runnable {
TransferManager tx;
File file;

AWSfunctions(File file) throws IOException {
    Config conf;
    String AccessKeyId;
    String SecretKey;
    AWSCredentials credentials;
    ClientConfiguration clientConfiguration;
    conf = ConfigFactory.load();
    AccessKeyId = conf.getString("AWSCredentials.AWSAccessKeyId");
    SecretKey = conf.getString("AWSCredentials.AWSSecretKey");
    credentials = new BasicAWSCredentials(AccessKeyId, SecretKey);

    this.tx = new TransferManager(credentials);
    this.file = file;
    System.out.println("thread get file" + this.file.getName());
}

public void sendFile() throws IOException, InterruptedException {
    Random rnd = new Random();
    PutObjectRequest request = new PutObjectRequest("test-for-est", String.valueOf(rnd.nextInt()) + ".jpg", file);
    long lBegin = System.currentTimeMillis();
    Upload myUpload = tx.upload(request);
    try {
        myUpload.waitForCompletion();
        file.delete();
        long lEnd = System.currentTimeMillis();
        long lDelta = lEnd - lBegin;
        System.out.println("TA DA DAM!" + lDelta);
    } catch (AmazonClientException amazonClientException) {
        amazonClientException.printStackTrace();
    }
}

@Override
public void run() {
    try {
        this.sendFile();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

然后,我尝试在互联网论坛或亚马逊文档中的许多示例中使用分块上传,但没有任何帮助。我想知道它是如何工作的,为什么从aws-console上传太快了。很抱歉我的英语不好,希望能在你的帮助下找到答案。

EN

回答 1

Stack Overflow用户

发布于 2014-06-17 17:14:43

这是您已经确定的一个很好的观点。实际上,亚马逊网络服务控制台在互联网范围内工作,更准确地说是亚马逊网络服务规模;在使用的亚马逊网络服务服务列表中,S3位居榜首;因此,显然会有如此多的优化、改进和大规模的设置,以完成从亚马逊网络服务控制台的上传。

将AWS控制台和自定义SDK应用程序进行比较来执行相同的操作,这不是直接的Apple与Apple的比较。

解决问题的更好方法是确定如何使用Java、您的代码等提高性能。有几个因素会影响/影响性能,如操作系统、硬件、JDK版本、AWS SDK、您的代码等。

从根本上讲,AWS控制台是Web应用程序,而您的应用程序是控制台应用程序(或从桌面运行的应用程序)。他们是两个完全不同的物种。

我可以告诉你的类比是,在Outlook.com - Web客户端中发送电子邮件的速度可能比从桌面上运行的Outlook应用程序发送邮件的速度更快。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24258539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档