인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

김혜림님의 프로필 이미지
김혜림

작성한 질문수

비전공자를 위한 풀스택 맛집지도 만들기 프로젝트!: Front, Back-end 그리고 배포까지

PM2 EADDRINUSE 에러

작성

·

271

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

김혜림님의 프로필 이미지
김혜림
질문자

DB connection pool 해제를 안한 문제였습니다 ◠‿◠

0

Jiwoon Jeong님의 프로필 이미지
Jiwoon Jeong
지식공유자

안녕하세요.

 

우선 5999 포트가 열려있는지 확인해봐야할 것 같습니다.

그리고 간단한 확인 조치로 3001과 같은 다른 포트에서도 동일한 증상이 있는지 확인해보셔야할 것 같아요.

 

감사합니다.

김혜림님의 프로필 이미지
김혜림
질문자

처음엔 서버를 4000 번 포트로 써보고 있었는데 안되서 5999로 바꿨는데도 똑같은 증상이 있습니다 ㅠ ㅠ

김혜림님의 프로필 이미지
김혜림

작성한 질문수

질문하기