【问题标题】:Sails Waterline Big file PostgreSQLSails Waterline 大文件 PostgreSQL
【发布时间】:2015-06-21 12:09:17
【问题描述】:

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

现在我正在尝试这个:

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 但没有成功。

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

【问题讨论】:

    标签: node.js postgresql sails.js waterline


    【解决方案1】:

    错误不是来自 PostgreSQL:它来自 Node.js。

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

    告诉你的老板,你拥有的服务器是不可能的。此外,必须完成每一个可能的优化。检查数据库的来源,尝试使变量尽可能少,等等...... 相信我,这不仅仅是一个“坏习惯”。如果您希望您的服务器能够扩展到大量用户,那么您根本无法在 PostgreSQL 上使用 5GB 文件。

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

    我会告诉他放弃。

    【讨论】:

    • 现在我在我的 mac 下使用 16Go RAM 进行开发。我只是用 360mo 文件和同样的错误进行测试,我不认为错误是 postgresql 但也许我缺少一些节点或帆配置
    猜你喜欢
    • 1970-01-01
    • 2014-05-12
    • 1970-01-01
    • 2019-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多