一、PM2 简介
1)PM2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。
2)PM2的运行需要Node 环境和Npm的支持
二、PM2 环境安装与使用
2.2、安装
[root@node local]# npm install -g pm2
2.3、常用命令
#从svn拉取测试代码
[root@node ~]# svn checkout svn://admin@xx.xx.xx.xx/dc_h5_20180606/dc_h5
[root@node ~]# ll
drwxr-xr-x 14 root root 4096 Dec 6 14:12 dc_h5
#生成module
[root@node dc_h5]# npm install
[root@node dc_h5]# npm run build
#启动
[root@node dc_h5]# pm2 start pm2.config.json --env 83
[PM2][WARN] Applications dc_h5 not running, starting...
[PM2] App [dc_h5] launched (2 instances)
┌─────┬────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │
├─────┼────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0 │ dc_h5 │ default │ 2.4.3 │ cluster │ 125235 │ 0s │ 0 │ online │ 0% │ 20.9mb │ root │ disabled │
│ 1 │ dc_h5 │ default │ 2.4.3 │ cluster │ 125242 │ 0s │ 0 │ online │ 0% │ 17.1mb │ root │ disabled │
└─────┴────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
[root@node dc_h5]# pm2 status
┌─────┬────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │
├─────┼────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0 │ dc_h5 │ default │ 2.4.3 │ cluster │ 125235 │ 22s │ 0 │ online │ 0% │ 90.1mb │ root │ disabled │
│ 1 │ dc_h5 │ default │ 2.4.3 │ cluster │ 125242 │ 22s │ 0 │ online │ 0% │ 87.6mb │ root │ disabled │
└─────┴────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
其他常用命令:
pm2 list #查看所用已启动项目
pm2 restart XXX #重启
pm2 stop XXX #停止
pm2 delete XXX #删除
pm2 monit #监视每个node进程的CPU和内存的使用情况
pm2 logs #显示所有进程日志
pm2 stop all #停止所有进程
pm2 restart all #重启所有进程
pm2 reload all #0秒停机重载进程 (用于 NETWORKED 进程)
pm2 stop 0 #停止指定的进程
pm2 restart 0 #重启指定的进程
pm2 startup #产生 init 脚本 保持进程活着
pm2 web #运行健壮的 computer API endpoint (http://localhost:9615)
pm2 delete 0 #杀死指定的进程
pm2 delete all #杀死全部进程
运行进程的不同方式:
pm2 start app.js -i max #根据有效CPU数目启动最大进程数目
pm2 start app.js -i 3 #启动3个进程
pm2 start app.js -x #用fork模式启动 app.js 而不是使用 cluster
pm2 start app.js -x -- -a 23 #用fork模式启动 app.js 并且传递参数 (-a 23)
pm2 start app.js --name serverone #启动一个进程并把它命名为 serverone
pm2 stop serverone #停止 serverone 进程
pm2 start app.json #启动进程, 在 app.json里设置选项
pm2 start app.js -i max -- -a 23 #在--之后给 app.js 传递参数
pm2 start app.js -i max -e err.log -o out.log #启动并生成一个配置文件
配置文件示例(实际使用自行删除)
ecosystem.config.js
module.exports = {
apps : [{
name : 'API', //应用名
script : 'app.js', //应用文件位置
env: {
PM2_SERVE_PATH: ".", //静态服务路径
PM2_SERVE_PORT: 8080, //静态服务器访问端口
NODE_ENV: 'development' //启动默认模式
},
env_production : {
NODE_ENV: 'production' //使用production模式 pm2 start ecosystem.config.js --env production
},
instances: "max", //将应用程序分布在所有CPU核心上,可以是整数或负数
watch:true, //监听模式
output: './out.log', //指定日志标准输出文件及位置
error: './error.log', //错误输出日志文件及位置,pm2 install pm2-logrotate进行日志文件拆分
merge_logs: true, //集群情况下,可以合并日志
log_type:"json", //日志类型
log_date_format: "DD-MM-YYYY", //日志日期记录格式
}],
deploy : {
production : {
user : 'node', //ssh 用户
host : '212.83.163.1', //ssh 地址
ref : 'origin/master', //GIT远程/分支
repo : 'git@github.com:repo.git', //git地址
path : '/var/www/production', //服务器文件路径
post-deploy : 'npm install && pm2 reload ecosystem.config.js --env production' //部署后的动作
}
}
};
示例
module.exports = {
apps: [
{
name: 'jeebiz_admin',
script: '/usr/bin/java',
args: [
"-jar",
"-Xmn512M",
"-Xms1024M",
"-Xmx1024M",
"-Dspring.profiles.active=test",
"target/jeebiz-admin-1.0.0-SNAPSHOT.jar"
],
instances: 1,
autorestart: true,
watch: false
}
]
};
作者:Jeebiz 创建时间:2021-05-28 10:00
更新时间:2023-12-28 09:15
更新时间:2023-12-28 09:15