Ich mache ein wenig OJT auf meinem ersten Knoten-Projekt, und während ich einen einfachen Server aufstehen kann, wird die App gehämmert werden, so Cluster zu verwenden, scheint eine gute Idee zu sein. Ich habe einige Codeschnipsel zusammengeschustert, die ich bei verschiedenen Suchen (einschließlich SO) gefunden habe, aber der Server startet nicht. Ich bin sicher, meine Unerfahrenheit mit Knoten hat mich etwas Dummes tun lassen, aber ich sehe es nicht.Verwenden von Cluster in einer Expressjs App
var express = require('express');
var cluster = require('cluster');
var path = require('path');
var cCPUs = require('os').cpus().length;
var port = 3000;
var root = path.dirname(__dirname);
if(cluster.isMaster) {
for(var i = 0; i < cCPUs; i++) {
cluster.fork();
}
cluster.on('death', function(worker) {
console.log('Worker ' + worker.pid + ' died.');
});
}
else {
// eyes.inspect(process.env);
console.log('Worker: %s', process.env.NODE_WORKER_ID);
var app = express();
var routes = require('./routes')(app);
app
.use(cluster.repl(root + 'cluster.repl'))
.use(cluster.stats({ connections: true, requests: true }))
.use(cluster.reload(root))
.listen(port);
}
ERGEBNIS:
TypeError: Object #<Cluster> has no method 'repl'
Wenn ich die use
Anrufe zu entfernen, die Arbeiter richtig starten, aber process.env.NODE_WORKER_ID
ist undefined
. Inspizieren process.env
zeigt mir, dass es definitiv nicht definiert ist. Vielleicht war der Ausschnitt, den ich benutzte, von einer alten Version, aber ich bin mir nicht sicher, wie ich den Arbeitsthread anders identifizieren könnte.
Wenn jemand kann entschlüsselt, was auch immer ich gekrochen bin, würde ich es wirklich zu schätzen wissen.
Die 'repl'-,' stats'- und 'reload'-Methoden, die Sie aufrufen, existieren nicht auf' cluster'. Beginnen Sie mit dem kanonischen Beispiel aus der [cluster's Dokumentation] (http://nodejs.org/api/cluster.html) und gehen Sie stattdessen von dort aus. – JohnnyHK
Hmmm. Wurde das Cluster-Modul irgendwann vor 0.8.16 (der von mir verwendeten Version) zum Core hinzugefügt? Vielleicht habe ich die ganze Zeit nur an genau den falschen Stellen gesucht. Vielen Dank. –
Ich denke 'cluster' gibt es seit 0.6, aber es wurde in 0.8 etwas überarbeitet. – JohnnyHK