2015-01-28 2 views
0

NodeJS에 앱이 있습니다.nodeJS 응용 프로그램의 규모를 늘리기위한 전략은 무엇입니까?

최근에 우리는 많은 트래픽이 발생했습니다 (이것은 나에게 새로운 경험입니다). 그래서 단일 프로세스가 더 많이 열려고 할 때 발생하는 "EMFILE : 너무 많은 열린 파일"오류로 인해 실행되었습니다. 파일 시스템이 허용하는 것보다.

나는이 제한을 늘렸으므로 지금은 좋습니다. 그러나 나는이 솔루션이 얼마나 오래 지속될 지 확신하지 못합니다 ...

나는 많은 양의 트래픽이 증가하고있는 노드 응용 프로그램을 확장하는 데 일반적으로 사용되는 옵션은 무엇입니까? (특히 열린 파일 제한 문제를 염두에두고)

클러스터링을 허용하는 PM2 프로세스 관리자가 내 눈을 사로 잡습니다. 응용 프로그램의 모든 인스턴스가 자신의 핵심을 필요로한다는 점을 이해하면 정확합니다. 즉, 단일 코어에서 4 개의 인스턴스를 실행 하시겠습니까?). 정기적으로 사용되는 다른 기술이 있습니까? 당신이 노드의 하나 개 이상의 인스턴스를 실행하려고 할 때

+0

열 수있는 최대 파일 수를 늘릴 수 있습니다. [이 이슈보기] (https://github.com/Unitech/PM2/issues/962#issuecomment-71680663). – soyuka

답변

0

PM2 간단한 솔루션 (사전에)

감사합니다, 또 다른 일반적인 대안은 클러스터 모듈 http://nodejs.org/api/cluster.html 당신이 HTTP를 다른를 구성해야 함을 명심이다 Nginx와 같은 서버를 사용하여 사용자 요청을 노드 프로세스로 리버스 프록시 할 수 있습니다.

코어 수에 관계없이 원하는 수의 노드 프로세스를 실행할 수 있습니다. 그러나 각 노드 프로세스가 단일 스레드이기 때문에 각 코어가 단일 스레드를 한 번에 실행할 수 있으므로 코어 수가 코어 프로세스 수와 일치 할 때 최적의 구성이됩니다. 노드 프로세스의 수가 코어에서로드 수보다 많으면 프로세서가 수행해야하는 중복 컨텍스트 전환으로 인해 성능이 저하됩니다.

+0

pm2가 원한다면 클러스터 모듈을 사용하고 있습니다;)'pm2 start app.js -i 0' – soyuka