2012-04-10 5 views
2

한 서버에서 3 개의 node.js 응용 프로그램을 실행하고 있습니다. 모두 포먼 (foreman)을 사용하여 always.js를 통해 응용 프로그램을 시작합니다.multiple node.js + always = Error : EMFILE 시계

0로드에서 내 앱 중 하나가 계속 오류 Error: watch EMFILE을 던지고 다시 시작합니다. 그 응용 프로그램은 여전히 ​​작동 비록 끊임없이 그 오류를 던지고있어 ... 나는이 오류에 대한 자세한 정보를 찾으려고 노력했지만 거기에 ("너무 많은 파일을 열거 나"증가 ulimit ".

제 질문은 : 유휴 웹 응용 프로그램 웹 응용 프로그램에서 왜 이런 일이 일어 났을까요? 아무것도하지 않고있어. 항상 문제가되는거야 .js? (이 시스템에는 항상 두 개의 다른 노드 응용 프로그램이 있습니다 ...)이 오류를 일으키는 원인에 대한 정보를 찾고 있습니다. 심각 할 경우 어떻게 해결할 수 있습니까?

감사합니다.

참고로, 여기에 콘솔에서 관련 발췌 한 것입니다

01:17:07 web.1  | app listening on http://0.0.0.0:5000 
01:17:07 web.1  | NODE_ENV = development 
01:17:07 web.1  | opened connection to database! 
01:17:07 web.1  | [always] Error: watch EMFILE 
01:17:07 web.1  | [always] Error: watch EMFILE 
01:17:07 web.1  |  at errnoException (fs.js:636:11) 
01:17:07 web.1  |  at FSWatcher.start (fs.js:663:11) 
01:17:07 web.1  |  at Object.watch (fs.js:691:11) 
01:17:07 web.1  |  at Object.oncomplete (/home/jesse/local/nodev0.6.14/lib/node_modules/always/lib/monitor.js:62:36) 
01:17:07 web.1  | [always] Restarting app.js with Node 
+0

나는 두 번째 응용 프로그램을 통해 실행하는 경우 'always' 명령 대신'node' 명령을 사용하면 모두 정상입니다. 한 번에'항상'의 한 인스턴스 만 실행될 수 있다는 제한이 있습니까? –

답변

8

내가 always.js 경험이 있지만, fs.watch 명령을 사용하는 다른 노드 유틸리티와 유사한 오류가있어하지 않는 어떤에서 turn은 리눅스의 inotify API를 사용한다.

당신은 inotify를 다음의 설정을 확인하려고 할 수 있습니다 :

cat /proc/sys/fs/inotify/max_user_instances 

를 파일이 존재하는 경우, 더 높은 값으로 설정 도움이 될 :

echo 8704 > /proc/sys/fs/inotify/max_user_instances