Skip to content
JJoriping edited this page Feb 21, 2017 · 6 revisions

개요

node.js는 기본적으로 싱글 스레드로 작동하기 때문에 조금만 부하가 생겨도 CPU 하나만 죽어나갑니다. 이를 해결하기 위해 node.js에는 cluster 모듈이 내장되어 있습니다. 끄투는 현재 이 모듈을 이용하여 클러스터링 기능을 구현하고 있으며 그 활용 방법을 여기에 정리했습니다.

  • ./settings.jsonweb-num-cpu 값으로 웹 서버를 클러스터링합니다.
  • ./settings.jsongame-num-cpu 값으로 게임 서버를 클러스터링합니다.
  • ./settings.jsongame-num-inst 값으로 게임 서버의 인스턴스 수를 정합니다.

CLI 용

  • 경로 ./Server에서 node lib/Web/cluster.js {프로세스 수}를 입력하여 웹 서버를 클러스터링합니다.
  • 경로 ./Server에서 node lib/Game/cluster.js {서버 번호} {프로세스 수}를 입력하여 게임 서버를 클러스터링합니다.

공통

  • 웹 서버를 클러스터링하는 경우 세션이 각 프로세스마다 별도로 처리되므로 반드시 Redis를 설치한 뒤 ./Server/lib/Web/main.jsnew Redission(...), 부분을 주석 해제해야 합니다.
  • 게임 서버의 인스턴스를 늘리는 경우 각 서버의 포트 번호를 ./Server/lib/sub/global.jsonMAIN_PORTS 배열에 기입해야 합니다. 포트 번호 간격은 게임 서버의 프로세스 수보다 커야 하며 권장 간격은 10입니다.

포트 번호

  • 웹 서버는 80번 포트를 사용합니다. HTTPS 통신을 하는 경우 ./Server/lib/Web/main.js 파일의 Server.listen(80); 부분을 80 대신 443으로 수정해 주세요.
  • 게임 서버는 마스터 게임 서버와 슬레이브 게임 서버로 나뉘어져 있고 한 마스터 게임 서버는 앞서 입력한 {프로세스 수}만큼의 슬레이브 게임 서버를 가지고 있습니다. 마스터 게임 서버의 포트는 ./Server/lib/sub/global.jsonMAIN_PORTS 배열에 있는 대로 설정되며, 슬레이브 게임 서버는 마스터 게임 서버의 포트 번호에 416 + {슬레이브 번호}를 더한 값입니다. {슬레이브 번호}는 0부터 시작하여 1씩 증가합니다.

서버 번호

위에서 소개한 서버 번호는 0부터 시작하며, 사용자에게 다음과 같이 표시됩니다.

# 별명
0 감자
1 냉이
2 다래
3 레몬
4 망고
5 보리
6 상추
7 아욱
8 자두
9 참외
10 커피
11 토란
12 포도
13 호박
14 꽈리
15 딸기
16 뽕잎
17 쑥갓
18 찔레
19 고구마