Nodejs应用程序内存使用情况跟踪并在退出时清理

时间:2015-12-15 03:43:43

标签: node.js express

“节点应用程序是节点进程对象的实例”。link

是否有一种方法可以在每次节点应用程序退出时清除服务器上的本地内存

[通过应用程序退出我的意思是当网站的每个用户关闭浏览器上的标签时]

1 个答案:

答案 0 :(得分:1)

node.js是一个为所有用户提供服务的流程。除了您自己在node.js代码中的任何状态之外,没有与给定用户关联的特定内存。代码可能代表给定用户本地存储在您的node.js服务器中。如果你有这样的记忆,那么知道何时清除该状态的典型方法如下:

  1. 在网页中提供特定的注销选项,当用户注销时,您将从内存中清除其状态。这并没有捕捉到用户可能消失的所有方式,因此通常会与其他选项一起完成。

  2. 有一个定期计时器(比如每10分钟一次),它会自动清除过去一小时内未提出网页请求的用户的任何状态(或者您希望将时间设置为多长时间)。这还要求您每次访问网站上的某些内容时为每个用户保留一个时间戳,这在中间件功能中很容易。

  3. 让您的所有客户端页面保持与服务器的webSocket连接,并且当该webSocket连接已关闭且未重新建立几分钟时,您可以假设用户不再有任何页面打开您的网站,您可以从记忆中清除他们的状态。

  4. 不要将用户状态存储在内存中。相反,使用具有良好缓存的持久数据库。然后,当用户不再使用您的站点时,他们的状态信息将优雅地从数据库缓存中老化。

  5. 注意:在node.js中跟踪内存的总体使用情况并不是一项简单的任务,因此如果您正在跟踪此内容,您确切知道自己在测量的内容非常重要。整个进程内存使用情况是实际使用的内存和以前使用的内存的组合,目前可以重用,但尚未返回给操作系统。您显然需要能够跟踪node.js实际使用的内存,而不仅仅是可以分配进程的内存。快照是跟踪实际使用内容的典型方法之一,而不仅仅是从操作系统分配的内容。