通过javascript SDK,S3上传速度非常慢

时间:2019-04-20 21:12:02

标签: aws-sdk-js

我正在尝试通过node.js和javascript SDK使用S3,但是延迟太慢了几个数量级。上传100kB需要10秒,上传200kB需要26秒。 tcpdump显示,在整个周期中,s3.upload()一直在移动数据并且没有挂起,但是带宽却很可笑。

通过AWS CLI进行的上传非常快(符合预期)。所有其他的node.js代码都可以快速,良好地工作(例如express,pug,multer)。无论是直接使用s3.upload()还是通过multer-s3都使用javascript SDK。

~/Documents/Development $ ls -lah test.jpg 
-rwxr-xr-x@ 1 john  wheel   236K Apr 20 21:38 test.jpg
~/Documents/Development $ time node awsup.js 
Uploading:  test.jpg
Success:  https://mybucketcode.s3.eu-north-1.amazonaws.com/1555794308678-test.jpg

real    0m26.107s
user    0m0.325s
sys 0m0.071s
~/Documents/Development $ cat awsup.js

var AWS = require('aws-sdk');
var fs = require('fs');

var bucketName = '66be4c77-2413-4b55-9374-306018f9e861';
var filename = "test.jpg";
AWS.config.loadFromPath('./aws-config.json');

var s3 = new AWS.S3({
  apiVersion: '2006-03-01'
  });

// Create the parameters for calling listObjects
var s3params = {
  Bucket: bucketName,
  Key: Date.now().toString() + "-" + filename,
  Body: fs.createReadStream(filename)
};

console.log("Uploading: ", filename);

var options = {};

s3.upload(s3params, options, function (err, data) {
  if(err) {
    console.log("Error: ", err);
  }

  if(data) {
    console.log("Success: ", data.Location);
  }
});

为了从s3获得可用速度,这很荒谬。莫非是我的Mac OS X?

0 个答案:

没有答案