<aside>
💡 설치 : npm install pm2 -g
버전확인 : pm2 -version
업데이트 : pm2 update
프로젝트 실행 : pm2 start app.js
중단 : pm2 stop app.js
재시작 : pm2 restart app.js → 프로세스 kill 후 다시 실행
리로드 : pm2 reload app.js → 프로세스를 kill 하지 않고 바로 적용
삭제 : pm2 delete app.js
모든 프로세스 삭제 : pm2 kill
실행목록 확인 : pm2 list , pm2 status , pm2 ls , pm2 l
상세내용 확인 : pm2 describe <id|app_name> , pm2 info <id|app_name> ,
pm2 show <id|app_name>
정보 모니터링 : pm2 monit
log 확인 : pm2 log → 모든 로그 확인
pm2 logs APP-NAME → 특정 app에 대한 로그 확인
pm2 logs --json → 로그를 json형식으로 출력
pm2 logs --format →형식화된 출력
pm2 logs --lines 200 → log 200줄만 보기
pm2 flush : 지금 사용중인 로그 파일 삭제
pm2 reloadLogs : 로그 다시 불러오기
</aside>
<aside>
💡 설치 : pm2 install pm2-logrotate → 이건 pm2 모듈이다 워낙 사람들이 헷갈려 하다보니
경고 문구가 존재한다. **NOTE:**the command is pm2 install NOT npm install
설치 후 list확인하면 이렇게 모듈이 생성된걸 확인가능

옵션들 :
기본 설정 확인
pm2 conf
기본 옵션을 변경하려면 밑에 예시 명령어 처럼 설정해주면 된다
pm2 set pm2-logrotate:max_size 1M
pm2 set pm2-logrotate:retain 14
pm2 set pm2-logrotate:compress false
pm2 set pm2-logrotate:rotateInterval 0 0 12 * *
</aside>
Node.js는 기본적으로 싱글 스레드(thread)로 돌아간다.Node.js 애플리케이션은 단일 CPU 코어에서 실행되기 때문에 CPU의 멀티코어 시스템은 사용할 수 없다.그래서 만약 서버의 사양이 8코어이며 16쓰레드면, 프로그램을 돌리는데 최대 16개 코어를 사용 할 수 있지만, 노드는 싱글 스레드 이기 때문에 모든 코어를 사용하지 못해 최대 성능을 내지 못하는, 즉 자원을 제대로 활용하지 못한다.그래서 Node.js는 이런 문제를 해결하기 위해클러스터(Cluster) 모듈을 통해 단일 프로세스를 멀티 프로세스(Worker)로 늘릴 수 있는 방법을 제공한다. 이걸 pm2가 해준다 굿
--watch : PM2가 실행된 프로젝트의 변경사항을 감지하여 서버를 자동 재시작(reload)
-i max(코어개수) : Node.js의 싱글 스레드를 보완하기 위한 클러스터(Cluster) 모드
--name : 앱 이름 지정--max-memory-restart <200MB> : 앱이 리로드 될때 최대의 메모리 지정--log <log_path> : 로그 파일 경로 지정-- arg1 arg2 arg3 : 스크립트에 추가 인수 전달