pm2

  |  

安装

npm install pm2 -g

pm2 的两种方式:
fork 模式,单实例多进程,常用于多语言混编,比如 php、python 等,不支持端口复用,需要自己做应用的端口分配和负载均衡的子进程业务代码。
缺点就是单服务器实例容易由于异常会导致服务器实例崩溃。

cluster 模式,多实例多进程,但是只支持 node,端口可以复用,不需要额外的端口配置,0 代码实现负载均衡。
优点就是由于多实例机制,可以保证服务器的容错性,就算出现异常也不会使多个服务器实例同时崩溃。

配置

初始化创建 ecosystem.config.js
pm2 init
会在/root/下创建
编辑文件

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
'use strict';
module.exports = {
'apps': [
{
'name': 'Auth', // 项目名
'script': '/data/www/Auth/app.js', // 执行文件
'cwd': './', // 根目录
'exec_mode': 'cluster', // 应用启动模式,支持fork和cluster模式
'instances': 1, // 应用启动实例个数,仅在cluster模式有效 默认为fork;或者 max
'max_memory_restart': '300M', // 最大内存限制数,超出自动重启
'min_uptime': '60s', // 应用运行少于时间被认为是异常启动
'max_restarts': 3, // 最大异常重启次数,即小于min_uptime运行时间重启次数;
'env_tri': { // 环境参数,当前指定为测试环境
'NODE_ENV': 'tri', // alinode配置
// 'ENABLE_NODE_LOG': 'YES', // process.env.REMOTE_ADDR // alinode配置
// 'NODE_LOG_DIR': '/root/.alinode/logs/', // alinode配置
},
'env_api': { // 环境参数,当前指定为测试环境
'NODE_ENV': 'api',
},
},
],
};

// 'autorestart': true, // 默认为true, 发生异常的情况下自动重启
// 'cron_restart': '', // crontab时间格式重启应用,目前只支持cluster模式;
// 'error_file': '~/.pm2/logs/Auth-error.log', // 错误日志文件
// 'out_file': '~/.pm2/logs/Auth-out.log', // 正常日志文件 可以设置输出到 /dev/null
// 'merge_logs': true, // 设置追加日志而不是新建日志
// 'log_date_format': 'YYYY-MM-DD HH:mm:ss', // 指定日志文件的时间格式
// 'args': '', // 传递给脚本的参数
// 'interpreter': '', // 指定的脚本解释器
// 'interpreter_args': '', // 传递给解释器的参数
// 'watch': true, // 是否监听文件变动然后重启
// 'ignore_watch': [ // 不用监听的文件
// 'node_modules',
// 'logs',
// ],
// 'restart_delay': '60s', // 异常重启情况下,延时重启时间

文件启动方式(可以启动多个项目)

pm2 start ecosystem.config.js --env tri

进入到项目中单个启动

pm2 start /root/pm2.config.js --only Auth --env tri

基础命令

1
2
3
4
5
6
7
8
pm2 start <js|json>  // 启动并添加一个进程
pm2 ls // 显示所有进程
pm2 delete <name|id|script|all|json|stdin> // 停止并删除指定的进程
// 此进程使用kill 无效,因为存在守护进程,所以手动kill掉某个进程后会自动重启
pm2 stop <id|name|all|json|stdin> // 停止进程
pm2 start <id|name|all|json|stdin> // 启动指定进程
pm2 restart <id|name|all|json|stdin> // 重启指定进程 也可使用正则匹配多个进程
pm2 monit 查看内存 cpu使用

日志

1
2
3
4
5
// 1 实时查看某进程日志
pm2 logs <id|name|all>
// 2 当没有指定日志目录时,默认在~/.pm2/logs中存放这所有进程日志历史

pm2 flush 清空所有历史应用日志

负载均衡

pm2 start app.js -i <number | max> // 启动指定数量的子进程

pm2 文档
pm2 进程管理工具使用总结
alinode 监控配置

文章目录
  1. 1. 安装
  2. 2. 配置
  3. 3. 文件启动方式(可以启动多个项目)
  4. 4. 进入到项目中单个启动
  5. 5. 基础命令
  6. 6. 日志
  7. 7. 负载均衡