У меня есть приложение, которое использует node.js (express) в качестве серверной части. Теперь я пытаюсь использовать кластер node.js для повышения производительности приложения, но безуспешно ...
Вот мое рабочее приложение. js:
import { Server } from "./server";
import { Debug } from "./utils/Debug";
const cluster = require("cluster");
const http = require("http");
const numCPUs = require("os").cpus().length;
const httpPort = 3000;
var app = Server.bootstrap().app;
app.set("port", httpPort);
var httpServer = http.createServer(app);
httpServer.listen(httpPort);
А вот код с использованием кластера (который не работает):
import { Server } from "./server";
import { Debug } from "./utils/Debug";
const cluster = require("cluster");
const http = require("http");
const numCPUs = require("os").cpus().length;
const httpPort = 3000;
Debug.log(numCPUs + " CPU(s)!");
if (cluster.isMaster) {
// Fork workers.
for (var i = 0; i < numCPUs; i++) {
cluster.fork();
}
// If a worker dies, log it to the console and start another worker.
cluster.on("exit", function (worker, code, signal) {
console.log("Worker " + worker.process.pid + " died.");
cluster.fork();
});
cluster.on("online", function (worker) {
console.log("Worker " + worker.process.pid + " is online");
});
// Log when a worker starts listening
cluster.on("listening", function (worker, address) {
console.log("Worker started with PID " + worker.process.pid + ".");
});
} else {
/**
* Create HTTP server.
*/
var app = Server.bootstrap().app;
app.set("port", httpPort);
var httpServer = http.createServer(app);
httpServer.listen(httpPort);
}
Когда я запускаю указанное выше, мой localhost: 3000 не прослушивает.
Что здесь не так?
Спасибо.