NodeJS:为什么pm2列表显示内存不断增加?

时间:2015-04-17 07:27:36

标签: javascript node.js

我正在使用带有NodeJS的HAPI.JS框架并创建了一个代理。认为代理意味着我只是在redis中维护会话。除此之外,我没有在代码中做任何事情。可能是唯一的事情是我使用setInterval来记录我的process.memoryUsage()每3分钟。

enter image description here

我的问题:

  1. 为什么我的记忆力会继续增加?
  2. 会不会下来?
  3. 是否由于setInterval继续记录进程使用而发生这种情况?
  4. 是否由于每个请求和响应的控制台记录而发生?
  5. 我的Redis数据库保持打开状态,直到我的服务器崩溃,这导致了这个?
  6. 我是否需要使用新文物或强循环等过程管理来识别这个?
  7. 那么这段记忆会持续多久,在某些时候它必须停止(我想知道那个点是什么?)
  8. 我使用池化概念使用MSSQL事务的续集?汇集是否会产生这个?
  9. P.S我是节点JS的新手。

1 个答案:

答案 0 :(得分:5)

  
      
  1. 为什么我的记忆力会继续增加?
  2.   

你有内存泄漏

  
      
  1. 会不会下来?
  2.   

有时候GC开始并清理一些事情(没有泄漏)

  
      
  1. 是否由于setInterval继续记录进程使用而发生这种情况?
  2.   

通常不会,但是没有看到我无法说出的代码

  
      
  1. 是否由于每个请求和响应的控制台记录而发生?
  2.   

通常不会,但是没有看到我无法说出的代码

  
      
  1. 我的Redis数据库保持打开状态,直到我的服务器崩溃,这导致了这个?
  2.   

应该不是问题。

  
      
  1. 我是否需要使用像新遗物或强力循环一样的过程管理来识别这个?
  2.   

这是一种方法......但也有其他方法。

  
      
  1. 那么这段记忆会持续多久,在某些时候它必须停止(我想知道那个点是什么?)
  2.   

取决于服务器设置。 RAM多少+正在运行的等等。

  
      
  1. 我使用池化概念使用MSSQL事务的续集?汇集是否会产生这个?
  2.   

通常不会,但是没有看到我无法说出的代码

也许这篇文章可以帮助您找到泄漏:
https://www.nearform.com/blog/how-to-self-detect-a-memory-leak-in-node/