首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >express中的multer-s3上传速度慢得离谱

express中的multer-s3上传速度慢得离谱
EN

Stack Overflow用户
提问于 2019-04-20 06:24:52
回答 1查看 1.5K关注 0票数 4

在我的express应用中,通过multer-s3上传文件到S3的速度慢得离谱(200kb需要10秒,延迟与文件大小相关)。问题是multer-s3,但有人能告诉我如何进一步调试库中发生的事情吗?不再支持将onFileUploadStart等传递给multer。我不知道multer-s3在做什么,以及延迟是在哪个阶段导致的。

问题不是亚马逊网络服务的S3,因为从命令行上传超快,也不是更多,因为上传到本地磁盘也很快。任何直接的S3 javascript操作也可以像预期的那样快速工作。

我试过关闭multer的内容自动输入功能,但效果不是很好。

代码语言:javascript
复制
var upload = multer({
  storage: multerS3({
    s3: s3,
    bucket: bucketName,
    acl: 'public-read',
    contentType: multerS3.AUTO_CONTENT_TYPE,
    metadata: function (req, file, cb) {
      cb(null, {fieldName: file.fieldname});
    },
    key: function (req, file, cb) {
      cb(null, Date.now().toString() + "-" + file.originalname);
    }
  },)
})

router.post('/', upload.array('files'), function(req, res, next) {
  console.log('Successfully uploaded ' + req.files.length + ' files!');
});

Want to have sub-second latency as I do with direct AWS CLI upload or using multer to store to local disk, takes 10 seconds to minute or more on sub-MB files.
EN

回答 1

Stack Overflow用户

发布于 2019-04-20 06:57:02

获得洞察力的一种方法是在响应套接字上代理write函数,并检查它是如何被调用的:

代码语言:javascript
复制
var upload = multer({
  storage: multerS3({
    s3: s3,
    bucket: bucketName,
    acl: 'public-read',
    contentType: multerS3.AUTO_CONTENT_TYPE,
    metadata: function (req, file, cb) {
      cb(null, {fieldName: file.fieldname});
    },
    key: function (req, file, cb) {
      cb(null, Date.now().toString() + "-" + file.originalname);
    }
  },)
})

router.post('/'
(req, res, next) => { // debug middleware
  const write = res.socket.write;
  res.socket.write = (function(...args) {
    // inspect args, look at the time between invocations of write
    // also check the size of the chunks being passed to write
    return write(...args)
  }).bind(res.socket);
  next();
}
, upload.array('files'), function(req, res, next) {
  console.log('Successfully uploaded ' + req.files.length + ' files!');
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55768464

复制
相关文章

相似问题

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