작성
·
265
0
강의 보면서 PM2 배포를 따라해보았습니다.
5999번 포트를 사용했고,
몇 번 API 요청을 하면 EADDRINUSE
에러가 뜹니다.
0|index | Error: listen EADDRINUSE: address already in use :::5999
0|index | at Server.setupListenHandle [as listen2] (node:net:1872:16)
0|index | at listenInCluster (node:net:1920:12)
0|index | at Server.listen (node:net:2008:7)
0|index | at Function.listen (/home/ubuntu/hyerim-resume/server/nodemodules/express/lib/application.js:635:24)
0|index | at Object.<anonymous> (/home/ubuntu/hyerim-resume/server/index.js:6:11)
0|index | at Module._compile (node:internal/modules/cjs/loader:1376:14)
0|index | at Module._extensions..js (node:internal/modules/cjs/loader:1435:10)
0|index | at Module.load (node:internal/modules/cjs/loader:1207:32)
0|index | at Module._load (node:internal/modules/cjs/loader:1023:12)
0|index | at Object.<anonymous> (/home/ubuntu/.nvm/versions/node/v21.2.0/lib/node_modules/pm2/lib/ProcessContainerFork.js:33:23)
{ 0|index | code: 'EADDRINUSE', 0|index | errno: -98, 0|index | syscall: 'listen', 0|index | address: '::', 0|index | port: 5999 0|index | }
이 에러가 이미 사용중인 포트로 실행하려고 하는 문제라고 해서
매번 sudo lsof -i :5999
, sudo kill -9 ~~
로 서버를 껐다 키면 또 금방 해당 에러가 발생합니다.
sudo lsof -i :5999
로 실행중인 프로세스를 확인하면 다음과 같습니다.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node\x20/ 1396 root 25u IPv6 451174 0t0 TCP ip-172-31-39-74.ap-northeast-2.compute.internal:5999->121.143.65.200:56521 (ESTABLISHED)
node\x20/ 1396 root 26u IPv6 20785 0t0 TCP *:5999 (LISTEN)
node\x20/ 1396 root 30u IPv6 451237 0t0 TCP ip-172-31-39-74.ap-northeast-2.compute.internal:5999->121.143.65.200:56645 (ESTABLISHED)
Mac M2 로 서버에 접근해서 PM2를 실행하는데, Mac에서 AirPlay 모드를 꺼야 한다는 Stack Overflow 내용도 보고 꺼봤지만 역시나 에러가 뜹니다.
pm2 start index.js —watch
로 pm2 인스턴스를 실행했더니 몇번 재시작을 자동으로 해주는 것 같지만 결국 재시작이 너무 잦다며 더이상 재시작이 되지 않는 것 같아요.
해결 방법이 궁금합니다 ㅠㅠ
아래는 제 서버의 package.json, index.js입니다.
Package.json
{
"name": "server",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node index.js"
},
"author": "",
"license": "ISC",
"dependencies": {
"compression": "^1.7.4",
"cors": "^2.8.5",
"express": "^4.18.2",
"jsonwebtoken": "^9.0.2",
"method-override": "^3.0.0",
"mysql2": "^3.6.3",
"nodemon": "^3.0.1",
"socket.io": "^4.7.2",
"winston": "^3.11.0",
"winston-daily-rotate-file": "^4.7.1"
}
}
index.js
const express = require("./config/express");
const { logger } = require("./config/winston"); //log
const port = 5999;
express().listen(port);
logger.info(`API Server Start At Port ${port}`);
답변 2
0
0
안녕하세요.
우선 5999 포트가 열려있는지 확인해봐야할 것 같습니다.
그리고 간단한 확인 조치로 3001과 같은 다른 포트에서도 동일한 증상이 있는지 확인해보셔야할 것 같아요.
감사합니다.
처음엔 서버를 4000 번 포트로 써보고 있었는데 안되서 5999로 바꿨는데도 똑같은 증상이 있습니다 ㅠ ㅠ