var workers = {};
if (cluster.isMaster) {
// 主进程分?
cluster.on(‘death‘, function (worker) {
// 当?个?作进程结束时,重启?作进程 delete workers[worker.pid];
worker = cluster.fork();
workers[worker.pid] = worker;
});
// 初始开启与CPU 数量相同的?作进程
for (var i = 0; i < numCPUs; i++) {
var worker = cluster.fork();
workers[worker.pid] = worker;
}
} else {
// ?作进程分?,启动服务器
var app = require(‘./app‘);
app.use(async (ctx, next) => {
console.log(‘worker‘ + cluster.worker.id + ‘,PID:‘ + process.pid)
next()
})
app.listen(3000);
}
// 当主进程被终?时,关闭所有?作进程
process.on(‘SIGTERM‘, function () {
for (var pid in workers) {
process.kill(pid);
}
process.exit(0);
});
require(‘./test‘)
?件上传服务器
scp (最原始)
scp docker-compose.yml root@47.98.252.43:/root/source/ #?件
scp -r mini-01 root@47.98.252.43:/root/source/ #?件夹
git (实际?作中)
deploy插件 (debug)
PM2的应?
内建负载均衡(使?Node cluster 集群模块、?进程,可以参考朴灵的《深?浅出node.js》?书
第九章)
线程守护,keep alive
0秒停机重载,维护升级的时候不需要停机.
现在 Linux (stable) & MacOSx (stable) & Windows (stable).多平台?持
停?不稳定的进程(避免?限循环)
控制台检测 https://id.keymetrics.io/api/oauth/login#/register
提供 HTTP API
配置
npm install -g pm2
pm2 start app.js --watch -i 2
// watch 监听?件变化
// -i 启动多少个实例
pm2 stop all
pm2 list
pm2 start app.js -i max # 根据机器CPU核数,开启对应数?的进程
配置process.yml
apps:
- script : app.js
instances: 2
watch : true
env :
NODE_ENV: production
Keymetrics在线监控
https://id.keymetrics.io
pm2 link 8hxvp4bfrftvwxn uis7ndy58fvuf7l TARO-SAMPLE