嗯...我回到第一方。我这辈子都想不通。
我收到以下错误:
FATAL ERROR: JS Allocation failed - process out of memory
我可以列举几十个(是的,几十个)我试图找到这个问题的根源的事情,但真的太多了。所以这里是关键点:
- 我只能在我的生产服务器上让它发生,而且我的应用程序又大又复杂,所以很难隔离
- 即使堆大小和 RSS 大小都 < 200 Mb,也会发生这种情况,考虑到机器(Amazon Cloud、CentOS、m1.large)具有 8Gb RAM,这应该不是问题
我的假设是(由于第二点)泄漏可能不是原因;相反,似乎可能有一个非常大的 SINGLE 对象。以下线程支持这一理论::在 Node.js 中使用 JSON.stringify 会导致“进程内存不足”错误
我真正需要的是某种方法来找出应用程序崩溃时内存的状态,或者可能是导致致命错误的堆栈跟踪。
根据我上面的假设,10 分钟前的堆转储是不够的(因为对象不会驻留在内存中)。