나는 Node.js로 프로젝트를 진행중이고 pm2로 서버를 관리하고 있다.개발 서버(dev)는 fork 모드, 운영 서버(main)는 cluster 모드로 띄우고 있는데 왜 dev, main 환경에 따라 모드를 다르게 설정했는지, 그리고 그 기반이 되는 CPU 코어는 무엇인지 정리해보려고 한다. 두 모드의 차이를 알기 위해서는 PM2가 어떤 도구인지, CPU 코어는 무엇인지 이해할 필요가 있다. PM2란?Node.js 앱을 백그라운드에서 계속 돌게 해주는 프로세스 관리자이다.코드가 죽거나 에러가 나도 자동으로 재시작해주고 로그 관리, 무중단 배포, 클러스터 실행까지 도와준다. CPU의 코어(Core)란?CPU에서 계산을 담당하는 연산 처리 장치이다.하나의 코어가 한 번에 1개의 일을 처리한다. 코어..
문제운영 서버에서 PM2를 실행하는데 .env.local 파일을 읽는다.확인해보니 포트 3000에서 LISTEN하지 않고 있었다. 그래서 npm run start를 수동으로 실행해야만 API가 정상적으로 작동하는 문제가 발생했다. pm2 설정이 필요한 분들은 아래 글을 참고해주세요!2024.08.26 - [💡/오류노트] - [Caddy] 3000포트가 열리지 않는 문제 해결(+PM2) 원인PM2에 환경 변수 설정 누락PM2를 설정할 때 NODE_ENV를 설정하지 않아 기본값인 development 환경으로 실행된 것이다.package.json의 start 스크립트에 NODE_ENV=production을 명시해놨다고 해도 PM2 실행할 때 설정하지 않았다면 적용되지 않는다. "scripts": ..
인스턴스를 재부팅하고 pm2 restart all 명령어를 실행했더니 [PM2][WARN] No process found 에러가 발생했다.현재 PM2에 등록된 프로세스가 없다는 것이다.재부팅하면서 PM2의 상태를 저장하지 않았거나 PM2가 자동으로 시작되지 않았기 때문이다. 해결1. PM2 상태 확인출력된 리스트가 비어 있다. PM2에 등록된 프로세스가 없음을 의미한다.$ pm2 list 2. PM2 복원저장된 프로세스 상태를 복원하기 위한 명령어를 실행한다.$ pm2 resurrect 3. PM2 상태 저장재부팅 후에도 PM2 프로세스를 자동으로 복원하기 위해 현재 프로세스를 저장한다.$ pm2 save 이 명령어는 현재 실행 중인 프로세스 상태를 /home/ubuntu/.pm2/dump.p..
- Total
- Today
- Yesterday