从数据库表和solr中读取数据后,我编写了一个脚本来更新数据库表。我正在使用asyn.waterfall模块。问题在于,成功完成所有操作后,脚本不会退出。我使用过的数据库连接池也认为可能正在创建脚本以无限期等待。我想将此脚本放在crontab中,如果无法正确退出,它将不必要地创建大量实例。
我刚刚经历了这个问题。
仅仅使用的问题process.exit()是我正在处理的程序正在创建句柄,但从未销毁它们。
process.exit()
它正在处理目录并将数据放入 orientdb中 。
因此,我学到的一些东西是在摆脱引用之前需要关闭数据库连接。但这process.exit()并不能解决所有情况。
当我的项目处理了2,000个文件时。它将剩下约500个,多余的手柄将填满可用的工作内存。这意味着它将无法继续。因此永远不会到达process.exit末尾。
process.exit
另一方面,如果关闭了要求应用程序保持打开状态的项目,则可以从源头上解决问题。
我能够使用的两个“未记录的功能”是
process._getActiveHandles(); process._getActiveRequests();
我不确定还有哪些其他功能可以帮助调试这些类型的问题,但是这些功能真的很棒。
它们返回一个数组,通过使用这些方法,您可以确定过程中发生的事情。
我只是希望这可以帮助其他在这篇文章中绊脚的人。