首页 > 解决方案 > 在 Node.js 中定位线程泄漏

问题描述

所以我在 Ubuntu 上运行了这个节点应用程序。我注意到有很多线程出现在表格中pstree -a

 └─node /bin/node --expose-gc -max-old-space-size=256 main.js
     └─process.title
         ├─sh ...
         ├─sudo ...
         │... bunch of scripts i'm doing
         ├─66*[{process.title}]
         └─5*[{node}]

有时有数十个,但可能会达到数百个。而且我不知道它们是如何创建的,它们在做什么。但可以肯定的是,它们正在消耗系统资源。

这个项目有复杂的包依赖,所以我很难找到这个问题的根本原因。如果有人可以为我阐明这种情况,将不胜感激。

标签: node.jsmultithreading

解决方案


感谢@jfriend00 的评论,它确实帮助我缩小了范围。

所以asyncawait和它的底层节点光纤在我的情况下是根本原因。

虽然我仍然不太确定这是如何发生的(因为这是一个广泛使用的模块,似乎没有人在谈论这个)。但是花一些时间用节点本机异步替换所有 asyncawait 会使线程数回到 4。


推荐阅读