inflearn logo
강의

Course

Instructor

[Renewed] Node.js Textbook - From Basics to Project Practice

Try using Socket.IO

PM2 + socket io 질문

1289

jgh9912039837

81 asked

0

제로초님 강의듣고 나름 열심히 만든앱 채팅입이

어제부터 동접자 7~8000명을 찍고 서버가 터진뒤

오늘 기세보니 만명을 찍을것같습니다.

우선 정말 감사드립니다.

그러나 현재 서버가 불안정해서 열심히 알아본결과

PM2 + socket.io를 사용하는게 지금 제가 빠르게 할 수있는방법으론 젤 괜찮을 것같아 해봤습니다.

공식문서 보고 따라했습니다.

npm remove -g pm2

npm install -g @socket.io/pm2

를 실행하고

socket.js

...

const SocketIo = require("socket.io");

const { createAdapter } = require("@socket.io/cluster-adapter");const { setupWorker } = require("@socket.io/sticky");

 module.exports = (server) => {

     const io = SockeIo(server, {path: '/socket.io})

io.adapter(createAdapter());

setupWorker(io);

....

}

이렇게 코드를 작성한뒤  package.json에 "start": "cross-env NODE_ENV=production pm2 start app.js -i 0"

이렇게하고 npm start를 하면 실행이 되지않습니다.

점검한다고 2시간가량 공백시간을 두었지만

결국 해결못하고 다시 하나의 cpu로 pm2 를 실행시켰습니다.

기세보니 오늘 동접자 만명 가까이 될듯한데, 정말 무섭습니다.

aws 서버는 t3.xl 쓰고있고 프론트(앱), 백앤드(서버+db) 이렇게 2티어 구조 쓰고있습니다.

pm2 clustering 만 어떻게 해결하면 문제없이 받아낼 수 있을것같은데, 어떻게 하면 해결할 수 있을까요.. ㅠㅠ

사적인 질문 너무 죄송하지만 너무 급해서 질문드립니다.. 답변해주시면 정말 감사하겠습니다.

nodejs mysql mongodb Sequelize

Answer 3

0

jgh9912039837

감사합니다. 저녁에 서버 터질것같으니 그때 종료되는김에 한번 해보겠습니다.

https://socket.io/docs/v4/pm2/

근데 위 문서보면 서버 호스트가 하나라면 redis없이 @socket.io/pm2 과 socket io 모듈로 가능할 것 같은데

 

처음에 따라했을땐 기존에 npm i pm2로 설치했었던것을 npm uninstall pm2를 하지않고 글로벌로 설치하지도 않았던npm remove -g pm2를 하고

npm i -g  @socket.io/pm2 를 해서 pm2 start app.js -i 0 을 했을때

실행되지 않았던것인가~ 라고 생각도 듭니다.

그래서 다음에 해볼떈 우선 npm uninstall pm2 하고 npm remove -g pm2  npm remove -g @socket.io/pm2 하고 sudo로도 세개 반복해보고 난 다음 다시 해보려고하는데,

 

위 문서대로하면 가능한것 맞나요??

0

jgh9912039837

redis 를 통한 방법도 있던데 한컴퓨터인데 redis가 해결방안이 맞는지도 모르겠고... 난감합니다

0

zerocho

redis가 해결방안입니다. 클러스터링할 때 redis 도입하셔야합니다.

0

zerocho

그리고 실행 시 어떤 에러가 뜨는지 확인하시고요. socket.io는 new 붙이지마세요.

0

jgh9912039837

그리고 혹시 공식문서랑 달라서 안되나하고

const io = SockeIo(server, {path: '/socket.io}) 부분을

cosnt io = new SocketIo(server) 이렇게 바꿔봤는데,

실행은되는데 SocketIo is not constructor 이라는 에러가 뜹니다. 

 

리눅스 노드 설치시 패키지

0

163

0

socket.js 에서 referer로부터 roomId를 가져올 때

0

909

3

스트리밍 방식으로 대용량 파일 업로드 & 다운로드 관련 질문

0

2286

2

a[title] 질문드립니다

0

379

1

리뉴얼 강의 및 공부 방법

0

583

1

jwt decode

0

1134

1

node.js 교과서 3판 질문드립니다

0

393

1

passport와 jwt

0

437

1

리뉴얼 강의

0

422

2

혹시 Node.js 교과서 3판 이북은 언제 나오나요?

0

356

1

몽고디비 사용자도 MYSQL부분을 들어야 하나요???

0

485

1

sql 쿼리 로그는 어떤 모듈이 작성하나요?

0

507

2

nunjucks res.render('error'); 작동을 안합니다.

0

514

1

질문있습니다.

0

348

1

multer 한글 파일 업로드시 파일명이 깨져요.

1

3538

1

수업자료는 어디있나요?

0

369

1

질문 있습니디

0

240

1

multer 사용시 file 외 name값은 못받나용?

0

420

1

코드 중복 부분 질문드립니다.

0

300

1

api 만드는 이유 질문드립니다.

0

290

1

Strategy의 done에 대해 질문드립니다.

0

368

1

안녕하세요 fs 권한 관련 질문드립니다

0

453

1

시퀄라이즈 연결질문...

0

503

2

res.setHeader vs res.cookie

0

1790

3