2011-03-08 5 views
5
난 단지 내 랙 스페이스 우분투 매버릭 인스턴스에 다음과 같은 오류가

을 사용하여 파일 ...하지만 내 로컬 우분투 맑은 VM에 :너무 많은 오픈 child_process

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')); 
    }); 
} 
+1

Dunno 문제를 해결하기 위해 할 수있는 일은 있지만 열린 파일의 수는 OS의 구성 가능한 부분이므로 로컬에서 제대로 작동하고 서버에서 작동하지 않습니다. –

답변

3

호스팅 제공 업체가 파일 제한을 얼마나 낮게 설정했는지 알면 도움이됩니다. ulimit -n은 프로세스 당 열린 파일 설명자의 수에 대한 제한이 무엇인지 알려줍니다. 일반적인 설치는 1024을 사용합니다. 커널 내 메모리 사용을 제한하기 위해 훨씬 낮게 설정했을 수도 있습니다.

하드 제한은 Rackspace에 정중하게 (예 : /etc/security/limits.conf의 쓰기 권한이없는 경우) 요청하고 하드 한도까지 올릴 수있는 소프트 한도로만 제기 할 수 있습니다. 소프트 제한을 낮게 설정하고 리소스 사용을 억제하려고 시도하지만 하드 제한을 더 높게 유지할 수 있습니다.

node이 현재 얼마나 많은 파일 설명자를 사용하고 있는지 알면 도움이됩니다. 로그인 한 상태에서 열려있는 파일 수를 확인하려면 /proc/$(pidof node.js)/fd/을 확인하십시오. 파일이나 소켓 또는 파이프를 닫을 수있는 것처럼 빨리 종료하지 않는 것입니까?

+0

'ulimit -n'은 Rackspace 상자와 VM 모두에서 1024입니다 ... – mkrecny

+0

또한'/ etc/security/limits.conf '의 내용은 두 경우 모두 동일합니다. – mkrecny