2

设想:

使用主脚本生成数量不定的子进程,次数不定,以便对服务器执行负载测试。

主脚本最初会生成它可以生成的所有子进程(根据其配置设置),然后当子进程退出时,如果配置请求更多运行,则启动新的子进程。

我看到的是在尝试启动第 83 个子进程时立即失败。83?

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

我很好奇 82 个子进程的神奇数字。这似乎表明节点的限制或我系统上的某些节点组合?

理想情况下,我对这个问题会回答一些知识缺乏了解,或者有人可以建议另一种方法来启动不会遇到此问题的脚本子进程?

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

细节:

  • NodeJS v0.4.7
  • Mac OS X v10.6.7
  • ulimit -n = 256
  • 将成功运行的生成子对象的幻数 = 82(意味着 > 82 个生成的 proc 将引发“打开的文件过多”错误)

谢谢你的帮助。

4

1 回答 1

3

我的猜测是系统正在做你告诉它的事情。82 个进程是每个进程 3 个打开的文件。标准输入、标准输出、标准错误。砰。您已经使用标准的 3 个文件描述符达到了 ulimit。使用 ulimit -n 512 运行,我敢打赌您将能够运行两倍的孩子。

于 2011-05-18T13:51:59.263 回答