pm2学习

 发布 : 2018-12-05  字数统计 : 947 字  阅读时长 : 4 分  分类 : 工程部署  浏览 :

说明

PM2nodejs进程 管理工具,内置负载均衡。它可以帮助您保持Node应用程序永久活动,重起这些node应用程序也不需要停机,并简化常见的系统管理任务。

主要特性

  • 内建负载均衡(使用Node cluster 集群模块)
  • 后台运行
  • 0秒停机重载–pm2 reload
  • 具有Ubuntu和CentOS 的启动脚本, windows 则可用 pm2-windows-startup
  • 控制台检测–pm2 monit

上面特性已体验,下面暂未体验到

  • 停止不稳定的进程(避免无限循环)
  • 提供 HTTP API
  • 远程控制和实时的接口API ( Nodejs 模块,允许和PM2进程管理器交互 )

安装

1
2
# 全局安装
npm install pm2 -g

常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# start and add a process to your list
pm2 start app.js

# show your list
pm2 ls

# stop and delete a process from the list
# Default process name is the filename without .js (eg: app for app.js).
# Use --name or -n to change.
pm2 delete app

# stop the process (kill the process but keep it in the process list)
pm2 stop app

# start the process
pm2 start app

# both stop and start
pm2 restart app

# Use reload instead of restart for 0-seconds downtime reloads:
pm2 reload app

# Managing apps is straightforward:
pm2 stop <app_name|id|'all'|json_conf>
pm2 restart <app_name|id|'all'|json_conf>
pm2 delete <app_name|id|'all'|json_conf>

# To have more details on a specific application:
pm2 describe <id|app_name>

# To monitor logs, custom metrics, application information:
pm2 monit

# logs
pm2 logs

# PM2 can generates and configure a Startup Script to keep PM2 and your processes alive at every server restart.
# PM2可以生成和配置启动脚本,以在每次服务器重新启动时保持PM2和您的进程活动。
$ pm2 startup # Generate Startup Script
$ pm2 save # Freeze your process list across server restart
$ pm2 unstartup # Remove Startup Script

# Updating PM2
$ npm install pm2@latest -g # Install latest PM2 version
$ pm2 update # Save process list, exit old PM2 & restore all processes

命令补全

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 后台运行pm2,启动4个app.js
# 也可以把'max' 参数传递给 start
# 正确的进程数目依赖于Cpu的核心数目
$ pm2 start app.js -i 4
# 命名进程
$ pm2 start app.js --name my-api
# 显示所有进程状态
$ pm2 list
# 监视所有进程
$ pm2 monit
# 显示所有进程日志
$ pm2 logs
# 停止所有进程
$ pm2 stop all
# 重启所有进程
$ pm2 restart all
# 0秒停机重载进程
$ pm2 reload all
# 停止指定的进程
$ pm2 stop 0
# 重启指定的进程
$ pm2 restart 0
# 产生init脚本保持进程活着
$ pm2 startup
# 运行健壮的 computer API endpoint (http:#localhost:9615)
$ pm2 web
# 杀死指定的进程
$ pm2 delete 0
# 杀死全部进程
$ pm2 delete all
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#运行进程的不同方式:

# 根据有效CPU数目启动最大进程数目
$ pm2 start app.js -i max
# 启动3个进程
$ pm2 start app.js -i 3
# 用fork模式启动app.js而不是使用 cluster
$ pm2 start app.js -x
# 用fork模式启动 app.js 并且传递参数 (-a 23)
$ pm2 start app.js -x -- -a 23
# 启动一个进程并把它命名为 serverone
$ pm2 start app.js --name serverone
# 停止 serverone 进程
$ pm2 stop serverone
# 启动进程, 在 app.json里设置选项
$ pm2 start app.json
# 在--之后给 app.js 传递参数
$ pm2 start app.js -i max -- -a 23
# 启动 并 生成一个配置文件
$ pm2 start app.js -i max -e err.log -o out.log
#你也可以执行用其他语言编写的app(fork模式):
$ pm2 start my-bash-script.sh -x --interpreter bash
$ pm2 start my-python-script.py -x --interpreter python

#集群模式:Node.js负载平衡和零停机重新加载
$ pm2 start api.js -i <processes> # 以集群模式启动Node.js应用程序,该应用程序将利用所有可用的CPU:
$ pm2 reload all # Zero Downtime Reload

补充说明

pm2 reload all # 常用于在集群模式(cluster mode)下,保持应用不停(Zero Downtime Reload)

pm2 startup # 开机启动,windows使用不行,推荐 pm2-windows-startup 配合实现对应效果

参考

留下足迹