Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 깃허브
- centos
- 쉘스크립트
- 리눅스
- 환경변수
- 머클루트
- immer
- 이더리움
- 노드
- 솔리디티
- 블록체인
- 변수
- Docker
- 벨로포터
- 일반유저
- 시퀄라이즈
- 라우터
- node.js 교과서 따라하기
- wget
- 설치
- Sequelize
- 리액트를 다루는 기술
- 머클트리
- 자바스크립트
- wsl
- 전역설치
- 우분투
- MariaDB
- 리액트
- npm
Archives
- Today
- Total
코드코코
210915 [4장] 4.5 cluster 본문
1. cluster.js
//cluster 모듈 : 기본적으로 싱글 프로세스로 동작하는 노드가 CPU 코어를 모두 사용할 수 있게 해주는 모듈.
//cluster에는 요청을 받아 워커 프로세스에 분배하는 master process와
//실질적인 일을 하는 worker process 가 있다.
const cluster = require('cluster');
const http = require('http');
const numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
console.log(`마스터 프로세스 아이디:${process.pid}`); //process.pid : 프로세스 식별자
//CPU 개수만큼 워커를 생산
for (let i = 0; i < numCPUs; i += 1) {
cluster.fork();//fork():프로세스를 생성하는 메서드
}
//워커가 종료되었을 때
cluster.on('exit', (worker, code, signal) => {
console.log(`${worker.process.pid}번 워커가 종료되었습니다.`);
console.log('code', code, 'signal', signal);
//프로세스 생성
//예기치 못한 에러로 서버 종료되는 현상 방지
cluster.fork();
});
} else {
//워커에서 포트에서 대기
http.createServer((req, res) => {
res.writeHead(200, { 'content-Type': 'text/html; charset=utf-8' });
res.write('<h1>Hello Node!</h1>');
res.end('<p>Hello Cluster!</p>');
//워커가 존재하는지 확인하기 위해 1초마다 강제 종료
setTimeout(() => {
//코드는 인수로 넣어준 코드가 출력됨
//신호는 존재하는 경우 프로세스를 동료한 신호의 이름이 출력됨.
process.exit(1);
}, 1000);
}).listen(8086);
console.log(`${process.pid}번 워커 실행`);
}
'기록 > node.js 교과서 따라하기' 카테고리의 다른 글
210916 [6장] 6.2 자주 사용하는 미들웨어 (0) | 2021.09.16 |
---|---|
210915 [6장] 6.1 익스프레스 프로젝트 시작하기 (0) | 2021.09.15 |
210915 [4장] 4.4 https와 http2 (0) | 2021.09.15 |
210914 [4장] 4.3 쿠키와 세션 이해하기 (0) | 2021.09.14 |
210913 [4장] 4.2 REST와 라우팅사용하기 (0) | 2021.09.13 |