在egg中启动自定义cluster失败
尝试在egg中使用自定义启动一组自己写的cluster, 但是却启动不了,cluster的变量也很奇怪,请教一下各位大神
// 自定义启动 app.js
module.exports = app => {
app.beforeStart(async () => {
app.cluster = require('./cluster/master');
});
};
// ./cluster/master.js
const cluster = require('cluster');
console.log('NODE_UNIQUE_ID' in process.env); // false
console.log(cluster.isMaster); //false
...
module.exports = cluster;
最奇怪的就是从app.js 调用执行master.js 后,尽管NODE_UNIQUE_ID是undefined,但cluster.isMaster却是false???实在想不通。因为isMaster是false, 后面的setupMaster()等操作也无法进行。
8 回复
@atian25 根据cluster模块描述,NODE_UNIQUE_ID如果是undefined,isMaster应该是true的,但log出来看却是false,不太明白🤔
@atian25 是这样的,我需要在同一台机器上用cluster跑多进程,想说在启动egg 前把那个cluster跑起来,然后把cluster对象传进去,基于egg 写一套类似pm2那样的管理api。
那 egg 其实你用来做 admin 就好了,不用用来管理 process,把他们独立为 2 个东西。 即使要在 egg 里面管理其他 node 进程的话,那也应该在 agent 里面做才对,因为 app 是多个的。