5

Rackspace Ubuntu Maverick インスタンスでのみ次のエラーが発生しますが、ローカルの Ubuntu Lucid VM では発生しません。

pipe(): Too many open files
pipe(): Too many open files

child_process.js:223
  var fds = this._internal.spawn(path,
                           ^
Error: Error spawning
    at ChildProcess.spawn (child_process.js:223:28)
    at child_process.js:10:15
    etc..etc..

それを生成するコード:

function getHeader(url, callback)
{
  var client = spawn('curl', ['-I', url]);
  client.stdout.on('data', function(data)
  {
    client.kill('SIGTERM');
    callback(data.toString('utf8'));
  });
}
4

1 に答える 1

3

ホスティングプロバイダーがファイル制限をどれだけ低く設定しているかを知ることは役に立ちます:プロセスごとの開いているファイル記述子の数の制限がulimit -n何であるかを教えてくれます。setrlimits(2)一般的なインストールでは1024。カーネル内のメモリ使用を制限するために、それをはるかに低く設定した可能性があります。

ラックスペースに丁寧に質問することによってのみ引き上げることができるハード制限(たとえば、への書き込みアクセス権がない場合/etc/security/limits.conf)と、ハード制限まで引き上げることができるソフト制限があります。リソースの使用を抑えようとするために、ソフト制限を低く設定した可能性がありますが、ハード制限は高く保ちます。

nodeまた、現在使用しているファイル記述子の数を知ることも役立ちます。ログインしているときに、/proc/$(pidof node.js)/fd/開いているファイルの数を確認してください。おそらく、ファイル、ソケット、またはパイプを閉じるのと同じくらい早く閉じていませんか?

于 2011-03-08T06:24:14.927 に答える