首页 > 解决方案 > 如何修复 node.js 中的内存泄漏

问题描述

我在过去的一天中为我的应用程序中的这个特殊案例而苦苦挣扎。

在一天中,应用程序从另一个数据库中获取数据(大约 400k 条目)并对其进行处理。处理后,应用程序将项目映射到该应用程序数据库内的集合并保存它们。

一切都很好,直到函数结束。目前,我正在通过 http 请求调用它,但这将是一项 CRON 工作。所以基本上,在到达 .res() 端点后,CPU 的使用速度并没有减慢,堆内存也没有释放。我只是想知道会发生什么。

我读了一些关于识别内存泄漏的文章并发现了这一点。[2] 是处理器,用于处理数据。

x[ 1] App                         Mem:  68 MB    CPU:  1 %  online xx                                                                                                                                                                   x
x[ 2] App                         Mem: 182 MB    CPU: 135 %  online xx                                                                                                                                                                   x
x[ 3] App                         Mem:  60 MB    CPU:  0 %  online xx                                                                                                                                                                   x
x[ 4] App                         Mem:  60 MB    CPU:  0 %  online xx                                                                                                                                                                   x
x[ 5] App                         Mem:  59 MB    CPU:  0 %  online

如您所见,内存和 CPU 远高于其他节点实例。我认为 .res() 会终止任务,释放内存并减慢 CPU 速度,但事实并非如此。

我使用 Expressjs,进行了 MVC 模式并将所有逻辑存储在类组件中。有什么办法可以释放这个内存,因为我试图应用某种清理功能,但它没有用:(。我已经开始没有办法确定可能的问题了。也许有很明显,我不注意,但老实说,我在节点方面没有太多经验来找出它。

标签: node.jsexpress

解决方案


推荐阅读