2014-10-02 5 views
1

nodejs에 하나의 기본 프로세스 (api.js)와 fork (fork)를 사용하여 애플리케이션을 설정하고 있습니다.nodejs forever-monitor가 포크 프로세스를 죽이지 않는다

또한 무엇이든 발생하면 모든 것이 실행되고 있음을 보장하기 위해 영원히 모니터해야합니다.

문제는 주 앱에서 무언가 일어 났을 때 영원히 행동하고 다시 산란 할 때 발생합니다. 그러나 그것의 그것의 이차 갈래 실을 죽이지.

그래서 오류를 시뮬레이션 한 후 ps aux의 프로세스 스택이 아무런 제어없이 커지고 있습니다.

나는 운이없는 killTree 매개 변수를 사용하고 있습니다.

어떤 도움 ??

답변

0

forever-monitor는 분리 된 자식 상태에서 자식 프로세스를 시작하므로 예상되는 동작입니다. 사용자 정의 영원히 모니터 스크립트는 사용중인 모든 신호를 처리하고 적절하게 자식 프로세스를 조작해야합니다. https://github.com/foreverjs/forever-monitor/issues/5

var forever = require('forever-monitor'); 
process.stdin.resume(); 

var child = new(forever.Monitor)('Index.js', { 
    max: 5, 
    silent: false, 
    minUptime: 2000, 
    spinSleepTime: 5000 
}); 

child.on('start', function() { 
    console.log('Forever started for first time.'); 
}); 

child.on('exit', function() { 
    console.error('Index.js file has exited after '+child.max+' restarts'); 
}); 

//Exit handler. 
function exitHandler(options, err) { 
    try{ 
     //Killing node process manually that is running "Index.js" file. 
     process.kill(child.childData.pid); 
     console.log("Child process killed succesfully!!"); 
     console.log("Forever exit!!"); 
    } 
    catch(err){ 
     console.log("Child process already stopped!!"); 
     console.log("Forever exit!!"); 
    } 

    //Killing forever process. 
    process.exit(); 
} 

//Handling user exit events like Ctrl+C. 
process.on('SIGINT', exitHandler.bind(null, {exit: true}));  

child.start(); 
:

이 문서를 참조하십시오