使用NodeJS child_processes.spawn运行脚本时打开的文件过多

场景:

使用主脚本产生可变数量的subprocess可变次数,以便对服务器执行负载testing。

主脚本最初产生所有可能的子(根据它的configuration设置),然后当subprocess退出,如果有更多的configuration请求运行,那么新的子代将被启动。

我所看到的是在试图启动第83次儿童进程时立即失败。 83?

我没有做任何事情来明确地closures作为子产卵过程的一部分打开的文件,但大概这不是开放代码的工作,而是child_processes模块代码?

我很好奇82个subprocess的神奇数字。 这似乎表明了一些有关节点的限制或我的系统上的某些节点的组合?

理想情况下,我有一些缺乏知识,这个问题会回答,或者有人可以build议一个替代方法来启动不会遇到这个问题的脚本的subprocess?

我也有兴趣了解即将到来的NodeJS的Web Worker API的状态。 任何人都知道吗?

细节:

  • NodeJS v0.4.7
  • Mac OS X v10.6.7
  • ulimit -n = 256
  • 将会成功运行的产卵小孩数量为82个(这意味着> 82个产生的特效会抛出“太多打开的文件”的错误)

谢谢你的帮助。

我的猜测是系统正在做你正在说的。 每个进程有82个进程是3个打开的文件。 STDIN,STDOUT,STDERR。 砰。 你只用标准的3个文件描述符就能达到你的ulimit。 用ulimit -n 512运行,我打赌你可以运行两倍的孩子。