我有一个带有8个逻辑处理器的4核CPU,在这段代码中,它创建了8个工作进程和1个主进程。当形成套接字
连接时,它倾向于连接到最后一个工作器CPU8
。使用此方法是否会自动添加负载平衡器
,还是需要添加它?是否有方法测试负载平衡器
是否工作?我尝试添加100个客户端,但它们都连接到CPU8
-不确定是否可能,因为在这个实例中几乎没有任何进程处理
简单Node.js集群
const os = require('os'),
cluster = require('cluster'),
cores = os.cpus();
var clusterCount = 0;
if (cluster.isMaster) {
console.log(`Master ${process.pid} is running`);
// Fork workers
for (let i = 0; i < cores.length; i++) {
cluster.fork();
}
cluster.on('exit', (worker, code, signal) => {
console.log(`worker ${worker.process.pid} died`);
});
}
else {
const http = require('http'),
express = require('express'),
socketio = require('socket.io'),
process = require('process');;
var cpu = cores[clusterCount];
var app = express();
var port = process.env.PORT || process.argv[2] || 8080;
var server = app.listen(port);
var io = socketio(server);
io.adapter(socketioRedis({ host: config.redis_host, port: config.redis_port }));
io.on('connection', (socket) => {
console.log(`User ${socket.id} connected to worker ${process.pid}`);
});
console.log(`Worker ${process.pid} started on port: ${port} | ${cpu.model}`);
clusterCount++;
}
这取决于几点。https://nodejs.org/api/cluster.html#cluster_how_it_works
使用此方法是否会自动添加负载均衡器?
主机将处理负载平衡。
sure if it could be because there is barely any process handling in this instance
这可能是CPU 8不是那么忙,仍然可以处理负载。有两种策略也取决于您使用的操作系统。