节点 child_process exec() 使系统崩溃
Node child_process exec() crashes system
我有一个很大的文件文件夹,我浏览并启动了 bash shell 命令(它与音频分析有关)。这些命令中的每一个都需要很长时间,我的虚拟机 CPU 很快达到 100% 负载并崩溃。有没有一种方法可以控制 child_process
' 的生成,从而防止 OS 崩溃?也许就像在给定时间有一个有限的进程池 运行 之类的......我希望有人有这方面的经验,因为在谷歌搜索问题时我什么也没找到 :D
我希望这个问题不会太奇特 :) 干杯!
Is there a way of controlling the spawning of child_process' so it protects the OS from crashing?
是的,有。您可以使用某种 pre-built 排队系统或作业管理系统,您可以在其中 pre-configure 您希望同时处理这些不同作业的进程数,或者您自己构建。
与此处关于 Whosebug 的所有问题一样,如果您包含您现在拥有的实际代码,您将得到一个更适合您的特定情况的答案。但是,一般概念是您创建一个工作队列。您决定要同时处理多少个进程。当你向队列中添加一些东西时,你会检查有多少进程已经 运行。如果最大值已经是 运行,那么您只需将任务添加到队列中即可。
如果最大进程数尚未达到 运行,您将创建一个新进程,将队列中最旧的项目传递给它,并增加一个计数器来跟踪有多少子进程(或工作进程) ) 您当前已打开。您监控每个过程,以便知道它何时完成。每当一个完成时,您不仅要处理结果,还要修改计数器以了解有多少个进程 运行 然后如果您没有达到最大值,您将获取队列中的下一个作业并启动一个它的子进程。'
子进程可以 运行 完成并停止每个作业,为每个新排队的项目启动一个新的,或者您可以让它们返回完成,但不终止,您可以向它们发送一个新的工作项。
在 npm 中有许多这样的作业管理或工人管理包,或者您可以相当简单地构建自己的包。我个人会获取一个已经编写好的库,但是每个现有库的任务适用性取决于您尚未共享的具体实现细节。
我有一个很大的文件文件夹,我浏览并启动了 bash shell 命令(它与音频分析有关)。这些命令中的每一个都需要很长时间,我的虚拟机 CPU 很快达到 100% 负载并崩溃。有没有一种方法可以控制 child_process
' 的生成,从而防止 OS 崩溃?也许就像在给定时间有一个有限的进程池 运行 之类的......我希望有人有这方面的经验,因为在谷歌搜索问题时我什么也没找到 :D
我希望这个问题不会太奇特 :) 干杯!
Is there a way of controlling the spawning of child_process' so it protects the OS from crashing?
是的,有。您可以使用某种 pre-built 排队系统或作业管理系统,您可以在其中 pre-configure 您希望同时处理这些不同作业的进程数,或者您自己构建。
与此处关于 Whosebug 的所有问题一样,如果您包含您现在拥有的实际代码,您将得到一个更适合您的特定情况的答案。但是,一般概念是您创建一个工作队列。您决定要同时处理多少个进程。当你向队列中添加一些东西时,你会检查有多少进程已经 运行。如果最大值已经是 运行,那么您只需将任务添加到队列中即可。
如果最大进程数尚未达到 运行,您将创建一个新进程,将队列中最旧的项目传递给它,并增加一个计数器来跟踪有多少子进程(或工作进程) ) 您当前已打开。您监控每个过程,以便知道它何时完成。每当一个完成时,您不仅要处理结果,还要修改计数器以了解有多少个进程 运行 然后如果您没有达到最大值,您将获取队列中的下一个作业并启动一个它的子进程。'
子进程可以 运行 完成并停止每个作业,为每个新排队的项目启动一个新的,或者您可以让它们返回完成,但不终止,您可以向它们发送一个新的工作项。
在 npm 中有许多这样的作业管理或工人管理包,或者您可以相当简单地构建自己的包。我个人会获取一个已经编写好的库,但是每个现有库的任务适用性取决于您尚未共享的具体实现细节。