Heroku connect.sessions() 内存泄漏,未缩放

Heroku connect.sessions() memory leak, not scaled

尝试使用具有 API 调用并连接到数据库的 heroku 部署应用程序时...

错误日志:“connect.session() MemoryStore 不是 专为生产环境设计,因为它会泄漏 内存,并且不会扩展到单个进程。"

我正在使用这样的会话...

app.use(session({
    secret: "I am nerdier than most",
    saveUninitialized: true,
    resave: true,
    cookie: { maxAge: 60000 }
}));

`/// using session as global validation //
app.use(function(req, res, next) {
  if (req.session && req.session.user) {
    db.users.findOne({ email: req.session.user.email }, function(err, 
    user) {
      if (user) {
        req.user = user;
        delete req.user.password; // delete the password from the 
        session
        req.session.user = user;  //refresh the session value
        res.locals.user = user;
      }
 // finishing processing the middleware and run the route
      next();
   });
  } else {
       next();
  }
})`

我该如何修复错误?

在本地,我可以 运行 应用程序就好了。我正在通过 massive 连接到 postgres 数据库。

如果您没有显式配置会话存储,connect.session()(您可能应该将其替换为 express-session,因为后者仍在维护,而前者上次更新是在 4 年前) 使用内存中的对象来存储会话。

这不仅会逐渐增加您的应用程序的内存使用量(这是警告的内容),还意味着如果您的服务器必须重新启动,您的所有会话都将消失。

要解决此问题,您应该配置持久会话存储,其中会话数据将以更持久的方式存储,通常存储在数据库中。会话存储列表 can be found here.

由于您已经在使用 PostgreSQL,connect-pg-simple 似乎是合乎逻辑的候选者。