[Node.js] PM2 log 명령어가 실행되지 않을때 해결방법 💞
개요 👋
PM2
란,
Node.js
애플리케이션을 위한 고급, 생산 중심의 프로세스 관리자 라고한다.
PM2
는,
데몬화, 클러스터링, 로깅, 로드 밸런싱 등 다양한 기능을 제공한다.
1️⃣ 데몬화
- 애플리케이션을 데몬화 하여 백그라운드에서 실행할 수 있다.
2️⃣ 클러스터링
- 애플리케이션을 여러 개의 프로세스로 분산하는 클러스터링을 지원한다.
3️⃣ 로드밸런싱
- 애플리케이션에 들어오는 요청을 여러개의 프로세스에 고르게 분산시킨다.
4️⃣ 자동 재시작
- 애플리케이션에 오류가 발생하며 자동으로 재시작한다.
5️⃣ 로깅
- 애플리케이션의 로그를 쉽게 모니터링하고 관리할 수 있다.
6️⃣ 모니터링
- 애플리케이션의 메모리 사용량, CPU 사용량 등 성능 지표를 모니터링 할 수 있다.
에러 발견 💥
pm2 log 1
의 명령어를 실행하면
id 값이 1 인 프로세스로 요청한 log 가 콘솔창에 출력되어야 하지만,
다음과 같이 에러가 발생해 log
가 출력되지 않는다.
에러 해결 ✨
pm2 reload <app_name|id|'all'>
본인의 경우 API 를 호출하는 부분에서 에러를 마주쳤기 때문에,
재 시작 할 id 값을 명시하여 reload
해 주었다.
pm2 reload 1
위에
reload
명령어가 정의되어있듯,
프로세스의name
이나id
혹은
고유한 값인pid
값도 가능할 것이라 예상하는 바 이다.
위 명령어를 통해 PM2
에서 실행중인 프로세스를 재 시작 할 수 있다.
해당 명령어는,
기존 프로세스를 중지 시키고 새 프로세스를 시작하는 대신
그레이스풀 리로드를 수행하여 기존 연결을 유지하면서 애플리케이션을 재시작 할 수 있다.
이를 통해 서비스 중단 시간 없이 애플리케이션을 업데이트 및 재시작을 할 수 있다.
reload
를 통해 프로세스를 재 시작 했다면,
pm2 list
명령어를 통해
현재 데몬의 형태로 실행되고있는 프로세스들의 상태를 확인할 수 있다.
이후,
다시 pm2 log 1
명령어를 실행하면
해당 API 에 요청을 보낸 log 가 정상적으로 출력된다.
Reference 🌊
https://inpa.tistory.com/entry/node-%F0%9F%93%9A-PM2-%EB%AA%A8%EB%93%88-%EC%82%AC%EC%9A%A9%EB%B2%95-%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0-%EB%AC%B4%EC%A4%91%EB%8B%A8-%EC%84%9C%EB%B9%84%EC%8A%A4
https://gareen.tistory.com/59
https://velog.io/@sinclebear/PM2-Log-%EC%82%AC%EC%9A%A9%EB%B0%A9%EB%B2%95