pm2怎么指定master
本文首发于个人博客 Cyy’s Blog
转载请注明出处 https://cyyjs.top/blog/5b45b0dbe54ee334f67518db
node 集群启动模式通常会这样写
var cluster = require('cluster')
var http = require('http')
var os = require('os')
var numCPUs = os.cpus().length
if (cluster.isMaster) {
for (var i = 0; i < numCPUs; ++i) {
cluster.fork()
}
} else {
http
.createServer(function(req, res) {
res.writeHead(200)
res.end('hello world')
})
.listen(8080)
}
我们可以通过cluster.isMaster来执行一些任务;
pm2是一个很好的nodejs 管理工具,我们可以通过配置来启动我们的nodejs服务,他的代码和我们平常写的一样。
例如:
var http = require('http')
http
.createServer(function(req, res) {
res.writeHead(200)
res.end('hello world')
})
.listen(8080)
但是我们想只在master上做一些任务,改怎么做呢?下面跟出一中方法:我们可以通过两个配置,分别指定不同的命令行参数来区别:
{
"apps": [
{
"name": "Master",
"script": "app.js",
"args": ["master"],
"instances": "1"
},
{
"name": "Slave",
"script": "app.js",
"args": ["slave"],
"instances": "-1"
}
]
}
然后在app.js中这样写:
if (process.argv[2] === 'master') {
// ...
} else {
// ...
}
也可以通过其他环境变量参数来区分那个是master。
