cluster ?

  1. 싱글 스레드인 노드는 하나의 코어만 사용 ⇒ 비효율적
  2. cluster 모듈을 사용해 하나이상의 코어를 사용하는것

Master

Worker


const cluster = require('cluster');
const os = require('os');
const numCPUs = os.cpus().length; // os.cpus().length 를 통해 cpu의 개수를 구할수있다.
const http = require('http');

if(cluster.isMaster){
    console.log('마스터 프로세스 아이디', process.pid);
    for(let i = 0; i < numCPUs; i+=1){
        cluster.fork();
    }
    cluster.on('exit', (worker, code, signal) => {
        console.log(worker.process.pid, '워커가 종료되었습니다.');
        //cluster.fork(); 워커 종료시 다시 살릴수있음.
    })    
}else{
    http.createServer((req, res) => {
        res.end('http server');

    }).listen(8080);
    console.log(process.pid, '워커실행');
}