pm(2)
백그라운드에서 돌고 있는 노드 프로세스를 확인할 방법이 필요한데, npx pm2 list 명령어를 사용하면 됩니다.
$ npx pm2 list

npm start를 실행했을 때처럼 현재 프로세스 정보가 표시됩니다. 프로세스 아이디(pid), CPU와 메모리 사용량(mem) 등이 보여 편리합니다. optime과 status 사이에 재시작된 횟수가 나오는데, 0이 아니라면 서버가 재부팅된 적이 있다는 것을 의미합니다. 이 경우에는 왜 재시작되었는지 확인해봐야 합니다. npx pm2 logs로 로그를 확인할 수 있습니다. 에러 로그만 보고 싶다면 위에 -err을 붙이면 됩니다. 출력 줄 수를 바꾸고 싶다면 --lines 숫자 옵션을 사용합니다.
나중에 pm2 프로세스를 종료하고 싶다면 콘솔에 npx pm2 kill을 입력하면 됩니다. 서버를 재시작하고 싶다면 npx pm2 reload all을 입력하면 다운타임(서버)가 재시작되어 졸습니다.
노드의 cluster 모듈처럼 클러스터링을 가능하게 하는 pm2의 클러스터링 모드를 사용해봅시다.
{
"name": "nodebird",
"version": "0.0.1",
"description": "익스프레스로 만드는 SNS 서비스",
"main": "server.js",
"scripts": {
"start": "cross-env NODE_ENV=production PORT=80 pm2 start server.js -i 0",
"dev": "nodemon server",
"test": "jest"
},
...
pm2 start app.js 대신에 pm2 start app.js -i 0 명령어를 사용합니다. 취향에 따라 pm2 start app.js -i -1도 많이 사용합니다. -i 뒤에 생성하길 원하는 프로세스 개수를 기입하면 됩니다. 0은 현재 CPU 코어 개수만큼 프로세스를 생성한다는 뜻이고, -1은 프로세스를 CPU 코어 개수보다 한 개 덜 생성하겠다는 뜻입니다. 남은 코어 하나는 노드 외의 다른 작업을 할 수 있게 하기 위해서입니다.
npx pm2 kill로 서버를 종료한 뒤 변경된 명령어를 사용합니다. &&를 사용해 여러 개의 명령어를 연달아 실행할 수 있습니다.
$ npx pm2 kill && npm start


예제를 작성한 컴퓨터는 코어가 여섯 개이므로 프로세스가 여섯 개 생성되었습니다. 또한 mode가 cluster를 되어 클러스터링 중임을 알 수 있습니다.
현재 프로세스를 모니터링할 수도 있습니다. npx pm2 monit으로 가능합니다.
$ npx pm2 monit

'프로그래밍 언어 > NODE JS' 카테고리의 다른 글
| helmet, hpp (0) | 2026.04.26 |
|---|---|
| winston (0) | 2026.04.23 |
| pm2(1) (0) | 2026.04.17 |
| sanitize-html, csurf (0) | 2026.04.14 |
| 시퀄라이즈: cross-env (1) | 2026.04.12 |