Sails Waterline Big file PostgreSQL

时间:2015-04-15 13:39:23

标签: node.js postgresql sails.js waterline

我想在postgreSQL数据库下保存大文件(5Go max),不要问我为什么我的老板想要,即使我说这是一个坏主意。所以现在我必须找到一个有效的解决方案。

现在我正在尝试这个:

var file = req.file("largeFile");

    file.upload({maxBytes : 1073741824 },function (err, uploadedFiles)
    {
      if (err)
      {
        return res.serverError(err);
      }
      var fs = require("fs");

      if (uploadedFiles.length > 0)
      {
        var file = uploadedFiles[0];
        fs.readFile(file.fd, function (err, data)
        {
          if (err)
          {
            return res.serverError(err);
          }

          var largeFile = {name : "testFile", data: data};
          LargeFile.create(largeFile).exec(function created (err, newInstance) {

            if(!err){
              res.view("homepage");
            }
          });
        });
      }
    });

LargeFile.create的应用程序崩溃:

FATAL ERROR: CALL_AND_RETRY_0 Allocation failed - process out of memory

我尝试设置--max-old-space-size和--max_executable_size,但没有运气。

这是可能的还是不可能的任务?

1 个答案:

答案 0 :(得分:2)

错误并非来自PostgreSQL:它来自Node.js.

最可能的解释是:您的服务器没有足够的RAM内存。

告诉你的老板你的服务器不可能。此外,必须完成每一项优化。检查数据库的来源,尝试尽量减少变量等等...... 相信我,这不仅仅是一种不良的做法"。如果您希望服务器扩展到许多用户,那么您就无法在PostgreSQL上使用5GB文件。

否则,请尝试优化代码:以其他方式格式化文件的数据,检查压缩可能性,避免过多的变量创建并检查代码是否存在内存泄漏。

我会告诉他放弃。