클라우드기반 서버라면 Node.js
로 서버를 만들고 실행할 경우 세션이 종료되었을 때 Node.js
로 만들어진 서버도 같이 종료되는 현상이 발생했다.
처음에는 forever
를 사용하여 백그라운드에서 실행하였지만 나중에 서버가 중단되고 말았다. 그래서 pm2를 활용하여 백그라운드에서 동작하고 서버가 중단되더라도 자동으로 시작하도록 하였다. pm2
라는 라이브러리를 설치하고 Node.js
로 만들어진 서버를 pm2
로 시작하면 된다.
다음의 명령어를 터미널에 입력하여 pm2
를 설치한다.
npm install -g pm2
다음 명령어를 터미널에 입력하여 pm2
로 Node.js
로 만들어진 서버를 시작할 수 있다.
pm2 start index.js
자바스크립트는 싱글 스레드 언어이기 때문에 Node.js
로 만들어진 서버도 똑같이 싱글 스레드로 동작하여 컴퓨터의 물리적 자원을 제대로 활용하지 못한다. pm2
는 이러한 단점을 보완하도록 pm2
라이브러리는 클러스터라는 모드를 제공한다. 클러스터모드로 서버를 시작하고 싶으면 다음의 명령어를 터미널에 입력한다.
pm2 start index.js -i max
여기서 max란 컴퓨터의 cpu를 모두 사용함을 의미하며 -1
을 입력할 경우 하나의 코어를 제외하고 모두 동작하도록 할 수 있다. 현재 pm2
로 동작 중인 서버가 궁금하다면 다음의 명령어를 터미널에 입력하여 pm2
로 실행하고 있는 서버를 확인할 수 있다.
pm2 list
pm2
를 중지 및 재시작을 하고 싶을 경우 다음의 명령어를 터미널에 입력하여 pm2
를 제어할 수 있다.
pm2 stop <app_name|namespace|id|'all'|json_conf>
pm2 restart <app_name|namespace|id|'all'|json_conf>
여기서 app_name
,namespace
,id
는 pm2
로 실행 중인 서버를 확인할 때 같이 확인이 가능하다.
자세한 설명은 npm의 pm2 라이브러리 페이지에서 알아볼 수 있다.