작성
·
1.1K
0
제로초님 강의듣고 나름 열심히 만든앱 채팅입이
어제부터 동접자 7~8000명을 찍고 서버가 터진뒤
오늘 기세보니 만명을 찍을것같습니다.
우선 정말 감사드립니다.
그러나 현재 서버가 불안정해서 열심히 알아본결과
PM2 + socket.io를 사용하는게 지금 제가 빠르게 할 수있는방법으론 젤 괜찮을 것같아 해봤습니다.
공식문서 보고 따라했습니다.
npm remove -g pm2
npm install -g @socket.io/pm2
를 실행하고
socket.js
...
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 만 어떻게 해결하면 문제없이 받아낼 수 있을것같은데, 어떻게 하면 해결할 수 있을까요.. ㅠㅠ
사적인 질문 너무 죄송하지만 너무 급해서 질문드립니다.. 답변해주시면 정말 감사하겠습니다.
답변 3
0
감사합니다. 저녁에 서버 터질것같으니 그때 종료되는김에 한번 해보겠습니다.
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
그리고 혹시 공식문서랑 달라서 안되나하고
const io = SockeIo(server, {path: '/socket.io}) 부분을
cosnt io = new SocketIo(server) 이렇게 바꿔봤는데,
실행은되는데 SocketIo is not constructor 이라는 에러가 뜹니다.
redis가 해결방안입니다. 클러스터링할 때 redis 도입하셔야합니다.