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
似乎是合乎逻辑的候选者。
尝试使用具有 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
似乎是合乎逻辑的候选者。