http://localhost:8086에 접속하면 1초 후 콘솔에 워커가 종료되었다는 메시지가 뜹니다. 여섯 번 새로 고침을 하면 모든 워커가 종료되어 서버가 응답하지 않습니다.
콘솔
16136번 워커가 종료되었습니다.
code 1 signal null
17272번 워커가 종료되었습니다.
code 1 signal null
16452번 워커가 종료되었습니다.
code 1 signal null
9004번 워커가 종료되었습니다.
code 1 signal null
11040번 워커가 종료되었습니다.
code 1 signal null
7368번 워커가 종료되었습니다.
code 1 signal null
코드(code)는 process.exit의 인수로 넣어준 코드가 출력되고, 신호(signal)는 존재하는 경우 프로세스를 종료한 신호의 이름이 출력됩니다.
워커 프로세스가 존재하기에 여섯 번까지는 오류가 발생해도 서버가 정상적으로 작동할 수 있다는 뜻입니다. 종료된 워커를 다시 켜면 오류가 발생해도 계속 버틸 수 있습니다. 다음과 같이 워커 프로세스가 종료되었을 때 새로 하나를 생성해봅시다.
cluster.js
...
cluster.on('exit', (worker, code, signal) => {
console.log(`${worker.process.pid}번 워커가 종료되었습니다.`);
console.log('code', code, 'signal', signal);
cluster.fork();
});
...
콘솔
28592번 워커가 종료되었습니다.
code 1 signal null
10520번 워커 실행
10520번 워커가 종료되었습니다.
code 1 signal null
23248번 워커 실행