[PM2] pm2 설명 및 사용법

박재현·2022년 3월 28일
0
post-custom-banner

🔎 pm2 란?

  • 서버가 에러로 인해 꺼졌을 때 서버를 다시 켜 줌
  • 멀티 프로세싱 지원 (노드 프로세스 수를 1개 이상으로 늘릴 수 있음)하기 때문에 메모리 자원을 공유가 불가
  • 이를 극복하기 위해 memocached, redis 와 같은 DB 사용 ( 공유 메모리를 별도 DB에 저장)할 수 있음

🔎 설치 및 시작

  1. sudo npm i -g pm2

  2. package.json 스크립트

"scripts": {
    "start": "NODE_ENV=production PORT=80 pm2 start server.js -i 0",
      // 뒤에 -i 0 붙이면 CPU 코어 개수만큼 프로세스 생성
      // -i -1 이면 CPU 갯수보다 1개 작은 수만 큼 생성 (fs, crypto와 같은 내장 모듈 실행할 수 있도록 풀어줌)
      // 어떤 것이 성능이 좋을지에 대해서는 테스트를 통해 확인해보기
  1. npm start

개발 환경의 경우 local 에서 80번 포트를 쓰고 있기 때문에 에러날 확률 높음
aws 서버에서는 80번 포트 열기

💡 로컬에서 pm2 사용 시 전역 명령어인 npx 붙여주기
ex) npx pm2 start server.js


🔎 명령어

npx pm2 list

  • pm2 가 돌아가고 있는 상황 확인 (이름, 재시작 횟수, 상태 등)

재시작 횟수가 많다면 에러가 있을 수 있다고 생각해 봐야함
리눅스나 맥의 경우 앞에 sudo를 붙여줘야할 수 있음

  • npx pm2 kill pm2 서버 종료시키기

  • npx pm2 reload all 현재 모든 서버들 재시작하기

  • npx pm2 monit 서버 별 실시간 로그 파악하기

  • pm2 logs --err 과거 에러 로그들 파악

  • pm2 start main.js --no-daemon console.log 출력


🔎 파일 추가, 수정 및 메모리 데이터 수정될 때 pm2 실행하기

pm2로 서버 실행 시 파일이 추가, 수정될 때 변경사항이 감지되어 서버가 꺼졌다가 재시작이 된다.
그래서 이미지파일 등이 업로드 되거나, 데이터(세션- passport)가 추가, 수정될 때 이를 pm2가 무시하도록 설정해야 함

data, sessions 폴더 안에 있는 파일 변경사항은 pm2가 감지하지 않도록 설정

  • pm2 start main.js --watch --ignore-watch="data/* sessions/*" --no-daemon
post-custom-banner

0개의 댓글