상세 컨텐츠

본문 제목

[nestJS] pm2를 쓰는 이유

카테고리 없음

by esoesmio 2024. 5. 20. 22:49

본문

pm2 공식 사이트의 한줄 소개를 보면 ,

"Advanced, production process manager for node.js" 라고 소개되어있다.

 

node.js를 위한 발전된 상품 프로세스 매니져 !

 

*process : 컴퓨터에 저장된 프로그램이 실행돼서 메모리에 올라간 상태. 즉 동작중인 프로그램을 말함.

 

즉 pm2란 node.js로 만들어진 프로그램을 잘 관리해주는 아이라는 것.

pm2는 여러가지 기능이 있는데, 예를들어

 

1. 프로그램이 꺼지면 자동으로 다시 켜줄 수 있다.

pm2로 start한 경우 , pm2로 끄지 않으면 

프로세스가 예기치 못하게 꺼졌을때, pm2로 시작한 경우 그냥 재시작 된다. 

 

# pm2 start app.js

-

위 명령을 해주면 app.js 라는 프로그램을 프로세스로 만든것이고 , 이 프로세스는 백그라운드로 돌아가게 된다. 그래서 바로 다른 명령을 수행할 수 있는 상태인채로 실행되는것 !

 

 

2. 코드가 바뀌었을 때 , 자동으로 프로세스를 컸다 켜준다  (즉, 리소스 수정시 자동 반영)

-

# pm2 start app.js --watch

 

만약 내가 개발을 하다가 파일의 코드를 수정했다고 치자. 

이때 파일이 수정됐다고 해서 메모리 상에서 동작되고있는 프로세스에 반영되는 것은 아니다.

즉 , 내가 코드를 수정해서 저장버튼을 누른다고 해서, 실행중인 앱에 변화가 생기지는 않는다는 것. 

 

그런데 pm2를 쓰면 코드를 수정했을 때 자동으로 프로세스를 껐다가 켜준다.(--watch 지켜보고있다가 변화가 생기면 껐다 켜준다 !)

 

3. 로그를 한번에 볼수있는 화면 지원

# pm2 log

- 현재 실행중인 프로세스들의 로그들을 하나의 화면에서 모아서 보여줌. 콘솔이랑 리로드됐을때 표시 등등

 

4. 짱편한 개발자 모드

# pm2-dev app.js

=>  watch + log 기능 이라고 생각하면 됨

 

 

5. pm2 클러스트 기능

-

# pm2 start app.js -i max

프로세스를 실행시킬 때 가능한 스레드의 숫자만큼 실행시키라는 뜻.

node.js 는 싱글 스레드라서 하나의 스레드만 사용함. 하지만 그 컴퓨터의 가능한 스레드가 더 많은데 하나만 쓰는것보다,

여러대의 스레드에 프로세스를 돌리면 더 많은 사용자의 접속을 받을 수 있음 .

16개의 스레드를 지원하는 컴퓨터 환경인데 1개의 스레드만 쓴다면 아까우니까 , 16개의 프로세스를 돌리는거임 ! (싱글 스레드 x 16개)

이렇게!!!

 

 

6. 컴퓨터가 꺼졌다가 켜졌을 때 , 프로세스를 자동으로 실행시켜주는 기능

# pm2 start app.js

# pm2 save

- 해당 경로에 현재 실행되고 있는 프로세스들에 대한 상태가 저장됨.

# pm2 startup

- 각각의 운영체제별로, 그 운영체제가 실행됐을 때 프로세스들을 실행시켜주는 명령어가 있는데 , 그 명령어를 알려줌.

 

이제 그 명령어를 복사해서 붙여넣고 실행 시키면, 컴퓨터가 꺼졌다가 켜졌을 때

save를 통해 저장해놓은 프로세스들의 상태를 복원해서 재실행시켜준다. pm2가 이걸 대신 다~~~~ 해주는 매니져 !

댓글 영역