Я использую NodeJS с PhantomJS. Моя цель — создать экземпляры узлов 4x с кластером узлов, каждый с двумя фантомными дочерними элементами. И мой код выглядит так:
кластер.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
до 10 000 или 15 000? Запуск 2 экземпляров может быть слишком медленным в течение 5 секунд или даже 10 секунд. - person Artjom B.   schedule 12.09.2014