我正在尝试通过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?