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 つの開いているファイルです。STDIN、STDOUT、STDERR。バン。標準の 3 つのファイル記述子だけで ulimit に達しました。ulimit -n 512 で実行すると、2 倍の数の子を実行できるはずです。

于 2011-05-18T13:51:59.263 に答える