NodeJS에서 Exception발생시 catch해주지 않으면, 

app이 Crash될 텐데요.


이럴때를 대비해서, Crash가 발생할 경우,

NodeJS를 재시작 시켜주는 프로세스 매니저를 사용해야 합니다.


이런 프로세스 매니저에는 PM2, Forever등이 있는데요.

제가 검색해본 바로는 프로덕션 서비스를 하는데, 

PM2가 더욱 안정적이고, 편리한 기능도 많이 제공해 주는 것 같습니다.

(순전히 개인적인 결과입니다;;)


오늘글에서는 이 PM2 에 대해서 정리해 보도록 하겠습니다.


1. PM2 설치 및 시작


우선 pm2홈페이지에 가보시면 아래와 같은 화면이 나오는데요.

monitoring툴을 제공하는 것도 보이고,

다양한 feature(기능)도 제공하는 것으로 보입니다.



먼저 pm2를 설치하겠습니다.

위의 화면에서 나오듯이 아래 명령어를 통해서 global로 설치해야 합니다.


sudo npm install pm2@latest -g




앱을 시작하려면, start명령어를 사용해주면 됩니다.

아래와 같은데요.

이름을 부여하고 싶으면, --name 후에 이름을 아래와 같이 설정해주면 되구요.

이름이 필요없다면 pm2 start app.js로 실행해주면 됩니다.


pm2 start app.js

pm2 start app.js -n 'testApp'


아래와 같이, pm2가 실행되는 것을 볼 수 있습니다. 




이미지의 하단에 보면, 실행하고 있는 앱의 상태를 표로 보여주고 있습니다.


현재 실행중인 앱의 리스트는 다음 명령어를 통해서 볼 수 있습니다.


pm2 list



2. PM2 재시작 및 중단


pm2를 재시작 하거나 중단하는 방법에 대해서도 알아보겠습니다.

재시작 하는 방법은 아래 명령어를 사용하면 됩니다.


pm2 restart <id 또는 앱이름 >


여기서의 id나 앱이름은 pm2를 start시켰을 때, 

위에서 본 이미지의 표에 나오는 그 것입니다.



추가로, 모든 프로세스에서 실행되는 앱을 재시작 하려면,

아래와 같이 해주면 됩니다.


pm2 restart all 


서버 공백없이(중단하지 않고), 재실행하려면 reload명령어를 사용해 줍니다.


pm2 reload <id 또는 앱이름>

pm2 reload all


중단하는 방법도 비슷한데요.


pm2 stop <id 또는 앱이름 >

pm2 stop all 



프로세스를 삭제하려면 delete 명령어를 사용하는데요.


pm2 delete <id 또는 앱이름>

pm2 delete all



3. PM2 로그 및 모니터보기


로그를 보는 명령어는 아래와 같구요.


pm2 logs


기록된 로그를 지우려면, 아래 명령어를 사용해 줍니다.


pm2 flush


PM2는, 모니터링 툴도 제공해주는데요.


pm2 monit


실행하면 아래와 같이 간단한 UI화면이 나타납니다.




4. PM2 Cluster모드


싱글 쓰레드인 NodeJS의 단점을 보완하고자,
NodeJS에는 Cluseter모드가 있는데요.
이와 유사한 Cluster모드가 PM2에도 존재합니다.
이 모드를 사용하려면, -i를 붙여주고 개수를 넣어주면 됩니다.

pm2 -i <프로세스의 수>
예>
pm2 -i 2 (2개의 cpu인 경우)

가능한 cpu개수에 맞춰서 최대한의 프로세스 수로 실행시키려 하면, 다음 명령어를 사용해 주면 되구요.

pm2 start app.js -i 0


5. PM2 자동시작 스크립트

서버가 reboot될 경우에 자동으로 프로세스를 시작하게 하려면 아래 명령어를 사용하면 됩니다.

 pm2 startup <os이름>
예>
pm2 startup ubuntu

어떤 os인지 명확하지 않을경우,
아래 명령어를 입력하면, pm2가 찾아서 설정합니다.

pm2 startup

실행하면 아래와 같은 화면이 나오는데요.




7. PM2 개발자 모드

개발자 모드는 pm2-dev를 사용합니다.

pm2-dev run <실행 파일이름>
예>
pm2-dev run app.js


6. PM2 업데이트


최신 버전의 pm2로 업데이트 하기위해서는 아래와 같이 해주면 됩니다.


sudo npm install pm2@latest -g


다음으로 현재 메모리에 올라가 있는 pm2를 어데이트 하기위해,

다음 명령어를 입력해 주면 됩니다.


pm2 update


+ Recent posts