为什么集群模块只使用 1-2 个工作人员,而不是通过所有 12 个工作人员来平衡负载?网站统计:每天有 10000 名用户,不断有 100-200 名在线用户。我正在使用 nginx 和 pm2 来启动服务器。
我的代码:
let net = require('net'),
config = require('config'),
cluster = require('cluster'),
logger = require('packages/logger'),
os = require('os');
if(cluster.isMaster) {
let workers = [], workersCount = process.env.NODE_ENV === 'production' ? os.cpus().length : 4;
let spawn = function(i) {
workers[i] = cluster.fork();
workers[i].on('exit', () => {
logger.error(`Worker ${i} is down`);
spawn(i);
});
};
for (let i = 0; i < workersCount; i++) {
logger.debug(`Spawn worker №${++workers.length}`);
spawn(i);
}
let worker_index = function(ip, len) {
let s = '';
for (let i = 0, _len = ip.length; i < _len; i++) {
if (!isNaN(ip[i])) {
s += ip[i];
}
}
return Number(s) % len;
};
net.createServer({pauseOnConnect: true}, (connection) => {
let worker = workers[worker_index(connection.remoteAddress, workersCount)];
worker.send('sticky-session:connection', connection);
}).listen(config.default.http.port);
}else {
let server = require('config/server');
server = server.server;//just an express http server
process.on('message', (message, connection) => {
if (message !== 'sticky-session:connection') {
return;
}
server.emit('connection', connection);
connection.resume();
});
}