【发布时间】:2014-11-06 02:55:46
【问题描述】:
我将 NodeJS 与 PhantomJS 一起使用。我的目标是使用节点集群创建 4 个节点实例,每个实例都有 2 个幻像子节点。我的代码如下所示:
cluster.js:
var numCPUs = 4;
if (cluster.isMaster) {
for (var i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on('exit', function(worker, code, signal) {
console.log('worker ' + worker.process.pid + ' died');
cluster.fork();
});
} else {
require("./app");
}
App.js 看起来像这样:
var instances = [];
var phantom = require('phantom');
function InstanceManager(instCount) {
for (var i = 0; i < instCount; i++) {
phantom.create(function(phantomInstance) {
instances.push({
cycle: 0,
locked: false,
instance: phantomInstance
});
});
}
}
InstanceManager(2);
setInterval(function() {
var i = 0;
console.log('--' + instances.length);
}, 5000);
所以在运行cluster.js 之后,节点控制台中每 5 秒的预期输出应该是:
--2
--2
--2
--2
但看起来像这样:
--0
--0
--0
--8
为什么幻影实例没有附加到正确的工作人员?
【问题讨论】:
-
当您将
setInterval超时增加到 10000 或 15000 时会发生什么? 2个实例的启动可能太慢了5秒甚至10秒。 -
还是一样的结果:(
-
我正在运行节点 0.10.26,它可以工作
-
@Deepsy 有趣的问题!!!我今天完成了我的答案,它在下面。我不得不省略细节,但我希望它足够清楚。
标签: node.js phantomjs cluster-computing child-process node-cluster