pm2中文文檔

pm2.20d3ef.png 
                                                                                             


PM2是Node.js應用程序的生產流程管理器,內置負載均衡。它能夠幫助您保持Node應用程序永久活動,重起這些node應用程序也不須要停機,並簡化常見的系統管理任務。
node

PM2 is a production process manager for Node.js applications with a built-in load balancer. It allows you to keep applications alive forever, to reload them without downtime and to facilitate common system admin tasks.python

在生產模式下啓動應用程序很是簡單
$ pm2 start app.js

 

安裝 PM2

$ npm install pm2 -g

npm is a builtin CLI when you install Node.js - Installing Node.js with NVMgit

 

啓動一個應用程序

$ pm2 start app.js

Your app is now daemonized, monitored and kept alive forever.github

More about Process Managementweb

 

更新 PM2

# 安裝最新的pm2
$ npm install pm2 -g
# Save process list, exit old PM2 & restore all processes
$ pm2 update

PM2 updates are seamlessshell

 

主要功能

經常使用命令一覽

# 普通General
$ npm install pm2 -g            # 安裝 PM2
$ pm2 start app.js              # 啓動,守護進程,自動重啓應用程序 Start, Daemonize and auto-restart application (Node)
$ pm2 start app.py              # 啓動,守護進程,自動重啓python應用程序 Start, Daemonize and auto-restart application (Python)
$ pm2 start npm -- start        # 啓動,守護進程,自動重啓node應用程序 Start, Daemonize and auto-restart Node application

# 集羣模式 (只支持node進程) Cluster Mode (Node.js only)
$ pm2 start app.js -i 4         # 在集羣模式下,啓動4個應用程序實例  Start 4 instances of application in cluster mode
                                # 同時,將網絡請求,負載均衡到每一個應用實例  it will load balance network queries to each app
$ pm2 reload all                # 0秒重啓全部應用 Zero Second Downtime Reload
$ pm2 scale [app-name] 10       # 將應用進程調整到10 Scale Cluster app to 10 process

# 進程監控 Scale Cluster app to 10 process
$ pm2 list                      # 列出全部用PM2啓動的進程 List all processes started with PM2
$ pm2 monit                     # 顯示每一個應用佔用的cpu和內存 Display memory and cpu usage of each app
$ pm2 show [app-name]           # 顯示某個進程的全部信息 Show all informations about application

# 日誌管理 Log management
$ pm2 logs                      # 顯示全部應用的日誌  Display logs of all apps
$ pm2 logs [app-name]           # 顯示某個應用的日誌 Display logs for a specific app
$ pm2 logs --json               # json化日誌 Logs in JSON format
$ pm2 flush
$ pm2 reloadLogs

# 進程狀態管理 Process State Management
$ pm2 start app.js --name="api" # 啓動一個應用並命名爲api。 Start application and name it "api"
$ pm2 start app.js -- -a 34     # 啓動一個應用,並傳遞「-a 34」的參數。 Start app and pass option "-a 34" as argument
$ pm2 start app.js --watch      # 重啓一個應用,當文件改變的時候。Restart application on file change
$ pm2 start script.sh           # 啓動一個bash腳本。Start bash script
$ pm2 start app.json            # 啓動在app.json中聲明的全部應用。Start all applications declared in app.json
$ pm2 reset [app-name]          # 重置全部計數器。Reset all counters
$ pm2 stop all                  # 中止全部應用。Stop all apps
$ pm2 stop 0                    # 中止id 爲0的應用。Stop process with id 0
$ pm2 restart all               # 重啓全部應用。Restart all apps
$ pm2 gracefulReload all        # 在集羣模式下,平穩的重加載全部應用。Graceful reload all apps in cluster mode
$ pm2 delete all                # 殺掉全部應用。Kill and delete all apps
$ pm2 delete 0                  # 殺掉id爲0的進程。Delete app with id 0

# 啓動/引導管理 Startup/Boot management
$ pm2 startup                   # 檢測init系統,在啓動時生成和配置pm2。Detect init system, generate and configure pm2 boot on startup
$ pm2 save                      # 保存當前進程列表。Save current process list
$ pm2 resurrect                 # 恢復之前保存的進程。Restore previously save processes
$ pm2 unstartup                 # 停用和刪除啓動系統。Disable and remove startup system
$ pm2 update                    # 保存進程,終止PM2並恢復進程。Save processes, kill PM2 and restore processes
$ pm2 generate                  # 生成樣本json配置文件。Generate a sample json configuration file

# 部署 Deployment
$ pm2 deploy app.json prod setup    # 設置「生產環境」遠程服務器。 Setup "prod" remote server
$ pm2 deploy app.json prod          # 更新「生產環境」遠程服務器。 Update "prod" remote server
$ pm2 deploy app.json prod revert 2 # 將「生產環境」遠程服務器恢復2。Revert "prod" remote server by 2

# 模塊系統 Module system
$ pm2 module:generate [name]    # 生成名稱爲[name]的示例模塊。Generate sample module with name [name]
$ pm2 install pm2-logrotate     # 安裝模塊(這裏是日誌循環系統)。Install module (here a log rotation system)
$ pm2 uninstall pm2-logrotate   # 卸載模塊。Uninstall module
$ pm2 publish                   # 增量版本,git push和npm發佈。Increment version, git push and npm publish

 

 

進程管理

一旦應用程序啓動,您能夠輕鬆地列出和管理它們:npm

pm2-list.png

 

列出正在運行的應用程序json

$ pm2 list

很簡單的管理你的應用進程api

$ pm2 stop     <app_name|id|'all'|json_conf>
$ pm2 restart  <app_name|id|'all'|json_conf>
$ pm2 delete   <app_name|id|'all'|json_conf>

要確保它在json_conf使用中從新評估環境變量 To make sure it re-evaluates enviroment variables in your json_conf use瀏覽器

$ pm2 restart <json_conf>

要了解特定流程的更多詳細信息

$ pm2 describe <id|app_name>

 

More about Process Management

Load Balancing & Zero second Downtime Reload

When an application is started with the -i option, the Cluster Mode is enabled.

The Cluster Mode start and automatically load balance HTTP/TCP/UDP between each instance. This allows to increase overall performance depending to the number of CPUs availabe.

Seamlessly supported by all major Node.js frameworks and any Node.js applications without any code change:

cluster-support.png

 

Main commands:

主要命令:

$ pm2 start app.js -i max  # 啓用負載平衡,啓動'max'實例(cpu nb)。Enable load-balancer and start 'max' instances (cpu nb)

$ pm2 reload all           # 0秒重啓。Zero second dowtime reload

$ pm2 scale <app_name> <instance_number> # 增長/減小進程號。Increase / Decrease process number

More informations about how PM2 make clustering easy

 

CPU/內存 監控

pm2-monit.png

 

監控全部啓動的進程:Monitoring all processes launched:

$ pm2 monit

 

日誌設施  Log facilities

pm2-logs.png

 

實時顯示指定進程或全部進程的日誌。提供標準,原始,JSON和格式輸出。

$ pm2 logs ['all'|app_name|app_id] [--json] [--format] [--raw]`

例子:

$ pm2 logs APP-NAME       # Display APP-NAME logs
$ pm2 logs --json         # JSON output
$ pm2 logs --format       # Formated output

$ pm2 flush               # Flush all logs
$ pm2 reloadLogs          # Reload all logs

More about log management

 

生成啓動腳本 Startup script generation

PM2能夠生成和配置啓動腳本,以在每次服務器從新啓動時保持PM2和您的進程活動。 支持init系統,如:systemd(Ubuntu 16,CentOS,Arch),upstart(Ubuntu 14/12),launchd(MacOSx,Darwin),rc.d(FreeBSD)。
# 自動檢測init系統+在服務器啓動時生成和設置PM2引導。 Auto detect init system + generate and setup PM2 boot at server startup
$ pm2 startup

# 手動指定啓動系統. Manually specify the startup system
# 能夠是:systemd,upstart,launchd,rcd。
$ pm2 startup [platform]

# 在服務器啓動時禁用和刪除PM2引導。Disable and remove PM2 boot at server startup
$ pm2 unstartup

 

在從新啓動時保存/凍結進程列表:To save/freeze a process list on reboot:

$ pm2 save

 

More about startup scripts

模塊系統 Module system

PM2嵌入了一個簡單而強大的模塊系統。安裝模塊很簡單:

$ pm2 install <module_name>

下面是一些PM2兼容模塊(由PM2管理的獨立Node.js應用程序):Here are some PM2 compatible modules (standalone Node.js applications managed by PM2):

pm2-logrotate 自動輪換PM2的日誌和管理的應用程序 (auto rotate logs of PM2 and applications managed)

pm2-webshell 在瀏覽器中展現一個功能完備的終端(expose a fully capable terminal in browsers)
pm2-server-monit 監視您的服務器運行情況(monitor your server health)

Writing your own module 

 

關鍵指標監控 Keymetrics monitoring

68747470733a2f2f6b65796d6574726963732e696f2f6173736574732f696d616765732f6170706c69636174696f6e2d64656d6f2e706e67

 

若是您使用PM2管理NodeJS應用程序,Keymetrics能夠輕鬆地跨服務器監控和管理應用程序。隨意試試:

Discover the monitoring dashboard for PM2

感謝,咱們但願你喜歡PM2!

 

 

translate by 青菜葉子(zhentaoo)

相關文章
相關標籤/搜索