서버 성능을 높이려고 cluster 모듈을 써서 멀티 프로세스로 띄우려고 하는데, 자꾸 포트가 이미 사용 중이라는 에러가 떠서 진행이 안 돼요.
코드:
const cluster = require('cluster');
const http = require('http');
if (cluster.isMaster) {
cluster.fork();
cluster.fork();
} else {
http.createServer((req, res) => {
res.end('Hello World');
}).listen(8080);
}
오류: Error: listen EADDRINUSE: address already in use :::8080
시도: 서버를 완전히 껐다가 다시 켜보기도 하고, 포트 번호를 8081이나 8082로 바꿔봐도 똑같이 에러가 나요.
질문: cluster를 사용할 때 각 워커 프로세스가 포트를 공유해서 사용해야 하는 것 같은데, 왜 개별적으로 포트를 점유하려고 해서 충돌이 발생하는 건가요?
댓글7
-
빗방울
2026.10.30 20:50
-
빗방울
2026.10.30 21:34
그니까요ㅋㅋ 근데 코드 보니까 fork를 두 번 따로 호출해서 꼬인 거 아님? 루프로 돌리는 게 안전할 듯요.
-
빗방울
2026.10.31 01:36
ㄹㅇ 그거면 진짜 이상하네ㅋㅋ
제 생각엔 혹시 이전에 실행했던 프로세스가 안 죽고 좀비처럼 남아있는 거 아님?
한번 싹 다 밀고 다시 해보셈 ㄷㄷ
-
빗방울
2026.10.30 22:55
혹시 윈도우 환경이신가요?
윈도우에서는 클러스터 포트 공유가 가끔 꼬이는 버그가 있던데
OS나 실행 환경 한번 체크해보셈ㅋㅋ
-
빗방울
2026.10.31 02:50
ㄹㅇ 윈도우면 그럴 수도 있겠네요ㅋㅋ
내 생각엔 그냥 리눅스나 도커로 옮겨서 돌려보는 게
정신건강에 이로울 듯ㄷㄷ
-
빗방울
2026.10.31 02:13
혹시 코드 실행할 때 `node index.js` 이렇게 직접 하신 건가요?
pm2 같은 프로세스 매니저 쓰고 계신 거면 설정 충돌 날 수도 있을 듯요ㅋㅋ
한번 체크해보셈ㄷㄷ
-
빗방울
2026.10.31 02:26
혹시 파일명이 index.js 같은 건데 실행할 때 모듈 경로 꼬인 거 아님? 내 생각엔 그냥 코드 다시 짰는데 저장이 안 됐거나 다른 파일 실행 중인 것 같은데 확인해보셈ㅋㅋ
모든 이야기1502
가벼운 안부부터 깊은 생각까지, 함께 나눠요.
이거 노드 버전이나 환경 문제 아님? 원래 마스터가 포트 잡고 워커들한테 뿌려주는 방식이라 안 나야 정상인데 ㄷㄷ 다시 한번 확인해보셈.