一尘不染

成功执行后,我的nodejs脚本没有自行退出

node.js

从数据库表和solr中读取数据后,我编写了一个脚本来更新数据库表。我正在使用asyn.waterfall模块。问题在于,成功完成所有操作后,脚本不会退出。我使用过的数据库连接池也认为可能正在创建脚本以无限期等待。我想将此脚本放在crontab中,如果无法正确退出,它将不必要地创建大量实例。


阅读 1191

收藏
2020-07-07

共1个答案

一尘不染

我刚刚经历了这个问题。

仅仅使用的问题process.exit()是我正在处理的程序正在创建句柄,但从未销毁它们。

它正在处理目录并将数据放入 orientdb中

因此,我学到的一些东西是在摆脱引用之前需要关闭数据库连接。但这process.exit()并不能解决所有情况。

当我的项目处理了2,000个文件时。它将剩下约500个,多余的手柄将填满可用的工作内存。这意味着它将无法继续。因此永远不会到达process.exit末尾。

另一方面,如果关闭了要求应用程序保持打开状态的项目,则可以从源头上解决问题。

我能够使用的两个“未记录的功能”是

process._getActiveHandles();
process._getActiveRequests();

我不确定还有哪些其他功能可以帮助调试这些类型的问题,但是这些功能真的很棒。

它们返回一个数组,通过使用这些方法,您可以确定过程中发生的事情。

我只是希望这可以帮助其他在这篇文章中绊脚的人。

2020-07-07