gpt4 book ai didi

node.js - 在生产中使用 MemoryStore

转载 作者:IT老高 更新时间:2023-10-28 21:47:08 25 4
gpt4 key购买 nike

今天我第一次在“生产”模式下运行我的 Node.js 应用程序并收到以下警告:

Warning: connection.session() MemoryStore is not
designed for a production environment, as it will leak
memory, and obviously only work within a single process.

我只需要运行一个进程,但我应该使用什么来代替?我希望我的 session 驻留在 RAM 中以便快速访问。我还希望能够通过简单地关闭 Node 应用程序来丢弃所有 session 。

仅仅为了这个简单的任务安装 Redis、MongoDB 或其他数据库似乎有点过头了。我也不明白为什么 Node 中不应该真正使用 MemoryStore?

最佳答案

好的,在与 Connect 开发人员交谈后,我得到了更多信息。这里有两件事被认为是内存泄漏:

  1. 在最近的版本中已经修复了 JSON 解析问题
  2. 如果用户从不访问过期 session ,则不会清除它们(即,唯一的清除是在访问时)

解决方案似乎比较简单,至少我打算这样做:使用 setInterval 定期清理过期的 session 。 MemoryStore 提供 all() 来获取列表,我们可以使用 get() 来强制读取,从而使它们过期。伪代码:

function sessionCleanup() {
sessionStore.all(function(err, sessions) {
for (var i = 0; i < sessions.length; i++) {
sessionStore.get(sessions[i], function() {} );
}
});
}

现在只需通过 setInterval() 定期调用 sessionCleanup,您就可以对过期 session 进行自动垃圾收集。不再有内存泄漏。

关于node.js - 在生产中使用 MemoryStore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10760620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com