最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

上传到Amazon S3 API使用适用于Node.js的速度异常慢

运维笔记admin13浏览0评论

上传到Amazon S3 API使用适用于Node.js的速度异常慢

上传到Amazon S3 API使用适用于Node.js的速度异常慢

一直试图弄清楚为什么上传到亚马逊S3使用putObject命令(node.js的库)是惊人的慢。下面的代码读取文件的整个目录,并把它们异步S3。

//Read a directory of files
fs.readdir(dir,function(err,files){

    //Read each file within the folder
    for(var i=0; i < files.length; i++){

    var file = files[i];

    //Read the File
    fs.readFile(path.join(dir,file), function(err, data){

        //Create a new buffer
        var buffer = new Buffer(data, 'base64');

        //Add the pdf to S3 
        s3.putObject({
        'Bucket':bucket,
        'Key':path.join(key,file),
        'Body':buffer,
        'ContentType':mime(file)
        },function(err, data) {

          //Wait for all the other files to be done
          // and perform a callback
        });
    });
    }
});

测试了若干类似的结果不同的文件夹中。

  • 6个文件的所有KB除1 @ 63KB之间1-2(20+秒上传)
  • 4个文件都完全3KB(20+秒上传)

上传使用AWS web interface相同的文件需要大约3秒,完成(或更少)。为什么使用Node.js的API这么慢?

按照亚马逊的文档,我甚至试过产卵多个孩子独立处理每个上传。没有变化的上传速度。

回答如下:

您是否设置正确region当您创建节点的新S3实例?

比方说,你的S3存储是us-east-1。为了获得最佳的传输速度你要确保你的S3实例被设置为区域,如:

const s3 = new AWS.S3({
        accessKeyId: "xxx",
        secretAccessKey: "xxx",
        region: 'us-east-1'
    });

否则,它可能慢得令人难以置信。有人也许可以附和的具体原因为什么出现这种情况---我猜它具有保持抬头的实际区域,同时做多部分请求,或者可能上传到另一个区域这从越来越远了做你的目标区域。

发布评论

评论列表(0)

  1. 暂无评论