← 개발 로그 목록

갑자기 posts, projects 들어가도 글들이 하나도 조회되지 않는다.

/ 2분 분량 / 개발 로그

DB 문제처럼 보였지만, 실제 원인은 서버 실행 방식(cluster)이 구조에 안 맞아서 생긴 포트 충돌이었다.

🧩 문제 요약

증상: 블로그에서 글 조회 API(/api/posts)가 갑자기 동작 안 함

확인: curl localhost:3000 연결 실패 → 백엔드 서버가 실제로 포트에 안 떠 있음

로그: Astro 쪽에서 EADDRINUSE :4321 에러 발생

🔍 원인 분석 과정 (사고 흐름)

“DB 문제일까?” →
API 자체에 연결이 안 되므로 DB 이전에 서버 문제라고 판단

포트 확인 (ss) →
3000 포트에 아무 프로세스도 없음 → 백엔드가 안 뜬 상태

PM2 상태 확인 →
둘 다 cluster 모드로 실행 중

로그에서 힌트 발견 →
EADDRINUSE = 같은 포트를 여러 프로세스가 동시에 바인딩 시도

👉 결론:
PM2 cluster 모드가 Astro SSR/Express 구조와 안 맞아서
서버가 여러 개 뜨며 포트 충돌 → 유령처럼 “online”이지만 실제론 서비스 불가

🛠 해결 과정

PM2 전체 프로세스 삭제

ecosystem.config.js에서

exec_mode: fork

instances: 1 로 수정

다시 PM2로 기동

포트(3000, 4321) 실제 listen 확인

curl localhost:3000/api/posts로 API 정상 응답 확인

✅ 결과

backend API 정상 복구

프론트에서 글 조회 다시 동작

EADDRINUSE 에러 사라짐

서버 구조가 서비스 성격에 맞게 안정화됨

🧠 핵심 배운 점

“안 된다” → DB부터 의심 ❌ → 포트/프로세스부터 확인 ⭕

PM2 cluster는 stateless API용

Astro SSR + 개인 블로그는 fork + 1 인스턴스가 정답

“online”이라고 진짜 살아 있는 건 아니다 → 항상 포트로 검증

한 줄로 요약하면:

DB 문제처럼 보였지만, 실제 원인은 서버 실행 방식(cluster)이 구조에 안 맞아서 생긴 포트 충돌이었다.