Express 앱용 프로세스 관리자

프로덕션 환경을 위한 Express를 실행할 때 프로세스 관리자를 사용하면 다음과 같은 태스크를 달성하는 데 도움이 됩니다.

  • 앱에서 충돌이 발생할 경우 앱을 자동으로 다시 시작.
  • 런타임 성능 및 자원 소비에 대한 통찰력을 획득.
  • 성능 향상을 위해 설정을 동적으로 수정.
  • 클러스터링을 제어.

프로세스 관리자는 애플리케이션 서버와 약간 비슷합니다. 프로세스 관리자는 애플리케이션을 위한 “컨테이너”이며, 배치 작업을 용이하게 하고, 높은 가용성을 제공하고, 런타임 시에 애플리케이션을 관리할 수 있도록 합니다.

가장 널리 사용되는 Express 및 기타 Node.js 애플리케이션용 프로세스 관리자는 다음과 같습니다.

이 세 가지 도구 중 어느 것을 사용해도 큰 도움이 될 수 있지만, StrongLoop Process Manager는 Node.js 애플리케이션 라이프사이클 전체를 처리하는 포괄적인 런타임 및 배치 솔루션과 프로덕션의 이전과 이후의 모든 단계에 대한 툴링을 통합 인터페이스를 통해 제공하는 유일한 도구입니다.

아래에서는 이 세 가지 도구를 각각 간략히 살펴보겠습니다. 이 도구들에 대한 상세한 비교를 확인하려면 http://strong-pm.io/compare/를 참조하십시오.

StrongLoop Process Manager

StrongLoop Process Manager(StrongLoop PM)는 Node.js 애플리케이션용 프로덕션 프로세스 관리자입니다. StrongLoop PM에는 기본 제공 로드 밸런싱, 모니터링, 멀티호스트 배치 및 그래픽 콘솔이 포함되어 있습니다. StrongLoop PM은 다음과 같은 태스크에 사용할 수 있습니다.

  • Node.js 애플리케이션을 빌드 및 패키징한 후 로컬 또는 원격 시스템에 배치.
  • CPU 프로파일 및 힙 스냅샷을 확인하여 성능을 최적화하고 메모리 누수를 진단.
  • 프로세스 및 클러스터를 항상 작동 상태로 유지.
  • 애플리케이션에 대한 성능 지표를 확인.
  • Nginx 통합을 통해 멀티호스트 배치를 쉽게 관리.
  • 여러 StrongLoop PM을 분산형 마이크로서비스 런타임으로 통합한 후 Arc를 통해 관리.

slc라는 강력한 명령행 인터페이스 도구 또는 Arc라는 그래픽 도구를 이용해 StrongLoop PM에 대한 작업을 실행할 수 있습니다. Arc는 오픈 소스 방식이며, StrongLoop에서 전문적인 지원을 제공합니다.

자세한 정보는 http://strong-pm.io/를 참조하십시오.

전체 문서:

설치


$ [sudo] npm install -g strongloop

기본적인 사용


$ cd my-app
$ slc start

Process Manager 및 배치된 모든 앱의 상태를 확인:


$ slc ctl
Service ID: 1
Service Name: my-app
Environment variables:
  No environment variables defined
Instances:
    Version  Agent version  Cluster size
     4.1.13      1.5.14           4
Processes:
        ID      PID   WID  Listening Ports  Tracking objects?  CPU profiling?
    1.1.57692  57692   0
    1.1.57693  57693   1     0.0.0.0:3001
    1.1.57694  57694   2     0.0.0.0:3001
    1.1.57695  57695   3     0.0.0.0:3001
    1.1.57696  57696   4     0.0.0.0:3001

관리 중인 모든 앱(서비스)의 목록을 표시:


$ slc ctl ls
Id          Name         Scale
 1          my-app       1

앱을 중지:


$ slc ctl stop my-app

앱을 다시 시작:


$ slc ctl restart my-app

또한 작업자 프로세스에게 기존의 연결을 닫은 후 현재의 애플리케이션을 다시 시작할 수 있는 유예 기간을 제공하는 “소프트 다시 시작”을 다음과 같이 구현할 수 있습니다.


$ slc ctl soft-restart my-app

관리 대상에서 앱을 제거:


$ slc ctl remove my-app

PM2

PM2는 Node.js 애플리케이션용 프로덕션 프로세스 관리자이며, 여기에는 기본 제공 로드 밸런서가 포함되어 있습니다. PM2를 이용하면 앱을 항상 작동 상태로 유지하고, 시스템 가동 중단 없이 앱을 다시 로드할 수 있으며, 일반적인 시스템 관리 태스크를 쉽게 처리할 수 있습니다. 또한 PM2를 이용하면 애플리케이션 로깅, 모니터링 및 클러스터링을 관리할 수 있습니다.

자세한 정보는 https://github.com/Unitech/pm2를 참조하십시오.

설치


$ [sudo] npm install pm2 -g

기본적인 사용

pm2 명령을 이용해 앱을 시작할 때는 앱의 경로를 지정해야 합니다. 그러나 앱을 중지하거나, 다시 시작하거나, 삭제할 때는 앱의 이름 또는 ID만 지정할 수 있습니다.


$ pm2 start app.js
[PM2] restartProcessId process id 0
┌──────────┬────┬──────┬───────┬────────┬─────────┬────────┬─────────────┬──────────┐
│ App name │ id │ mode │ pid   │ status │ restart │ uptime │ memory      │ watching │
├──────────┼────┼──────┼───────┼────────┼─────────┼────────┼─────────────┼──────────┤
│ my-app   │ 0  │ fork │ 64029 │ online │ 1       │ 0s     │ 17.816 MB   │ disabled │
└──────────┴────┴──────┴───────┴────────┴─────────┴────────┴─────────────┴──────────┘
 Use the `pm2 show <id|name>` command to get more details about an app.

pm2 명령을 이용해 앱을 시작할 때, 앱은 즉시 백그라운드로 보내집니다. 다양한 pm2 명령을 이용하면 명령행을 통해 백그라운드 앱을 제어할 수 있습니다.

pm2 명령을 이용해 앱을 시작하면, 앱은 PM2의 프로세스 목록에 ID와 함께 등록됩니다. 따라서 시스템의 서로 다른 디렉토리에 있는 동일한 이름의 앱을 각 앱의 ID를 이용해 관리할 수 있습니다.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

동일한 이름의 앱이 2개 이상 실행되고 있는 경우, pm2 명령은 동일한 이름의 앱 모두에 영향을 미친다는 점을 참고하십시오. 그러므로 개개의 앱을 관리하려면 이름 대신 ID를 사용하십시오.

실행 중인 모든 프로세스의 목록을 표시:


$ pm2 list

앱을 중지:


$ pm2 stop 0

앱을 다시 시작:


$ pm2 restart 0

앱에 대한 상세 정보를 확인:


$ pm2 show 0

PM2의 레지스트리에서 앱을 제거:


$ pm2 delete 0

Forever

Forever는 주어진 스크립트가 지속적으로(영원히) 실행되도록 하는 간단한 명령행 인터페이스 도구입니다. Forever는 간단한 인터페이스를 갖추고 있으므로 소규모 배치의 Node.js 앱 및 스크립트를 실행하는 데 가장 적합합니다.

자세한 정보는 https://github.com/foreverjs/forever를 참조하십시오.

설치


$ [sudo] npm install forever -g

기본적인 사용

스크립트를 시작하려면 forever start 명령을 이용해 해당 스크립트의 경로를 다음과 같이 지정하십시오.


$ forever start script.js

이 명령은 디먼 모드에서(백그라운드에서) 해당 스크립트를 실행합니다.

터미널에 연결되도록 스크립트를 실행하려면 다음과 같이 start를 생략하십시오.


$ forever script.js

로깅 옵션인 -l-o 및 -e를 이용해 Forever 도구 및 스크립트의 출력을 로깅하는 것은 좋은 생각이며, 아래에는 이에 대한 예가 표시되어 있습니다.


$ forever start -l forever.log -o out.log -e err.log script.js

Forever를 통해 시작된 스크립트의 목록을 확인:


$ forever list

Forever를 통해 시작된 스크립트를 중지하려면 forever stop 명령을 이용해 프로세스 인덱스를 지정하십시오(인덱스는 forever list 명령을 통해 표시되는 목록을 참조).


$ forever stop 1

대안적으로, 다음과 같이 파일의 경로를 지정할 수 있습니다.


$ forever stop script.js

Forever를 통해 시작된 모든 스크립트를 중지:


$ forever stopall

Forever에는 더 많은 옵션이 있으며 프로그래밍 방식의 API 또한 제공합니다.

 

[출처] http://expressjs.com/ko/advanced/pm.html

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
31 [web개발] [jQuery] Select박스 option 값 선택하기 졸리운_곰 2021.10.20 652
30 [web개발][javascript][JQuery] textarea 값 설정및 값 가져오기 졸리운_곰 2021.10.19 441
29 [javascript][jQuery] 제이쿼리(jQuery) 선택자 - #1 file 졸리운_곰 2021.09.07 570
28 [HTML5, Javascript, Jquery] Add item from array to list when button is clicked in jQuery 졸리운_곰 2021.06.01 739
27 textarea 태그에 값을 넣고 뺄때 아니면 개행문자 '\n'이 혼란이 온다 졸리운_곰 2019.04.08 692
26 jQuery ready와 load의 차이 file 졸리운_곰 2019.03.29 733
25 How can I detect if a selector returns null? 졸리운_곰 2019.03.25 454
24 jQuery.isEmptyObject() 졸리운_곰 2019.03.24 793
23 [jQuery]요소를 추가하는 메소드(append, prepend, after, before) 졸리운_곰 2019.03.10 575
22 jQuery / Method / .text() - 선택한 요소 안의 내용을 가져오거나, 다른 내용으로 바꾸는 메서드 file 졸리운_곰 2019.03.10 591
21 How do you convert a jQuery object into a string? 졸리운_곰 2019.03.10 454
20 JQuery 오브젝트 셀렉트한 select object의 내용 확인 졸리운_곰 2019.03.10 601
19 JQuery Object 선언 : jQuery creating objects [duplicate] 졸리운_곰 2019.03.06 542
18 [제이쿼리] 태그 및 요소 삭제, Remove() file 졸리운_곰 2019.03.06 848
17 jQuery .each문(for문) 사용시 break, continue를 하려면? file 졸리운_곰 2019.03.06 743
16 jQuery / Method / .removeClass() - 선택한 요소의 클래스 값을 제거하는 메서드 file 졸리운_곰 2019.03.06 543
15 [jQuery] 선택자에 변수 넣기 졸리운_곰 2019.03.04 642
14 JQuery로 radio 버튼의 값 가져오기 : How to get the value of selected radio button in a group using jQuery 졸리운_곰 2019.01.10 532
13 Ajax replace instead of append 그리고 jquery .append(Html). 에서 class 적용 적용 졸리운_곰 2019.01.07 625
12 [jQuery] Ajax 방법 졸리운_곰 2018.08.03 656
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED