1
1つのポートで開かれた接続の数を制限することを試みています。だから私は、例えば、異なるポート上で実行している私のサーバーの複数のインスタンスを作成する方法を考えた:socket.io router、複数のインスタンスの1つに割り当てよう
- インスタンス1(3001)
server_i1.js
- インスタンス2(3002)
server_i2.js
- インスタンス3(3003)
server_i3.js
- インスタンス4(3004)
server_i4.js
その後、私はどのように多くの接続をチェックしますつの追加のファイルserver_route.js
を持つことができますイオンは各インスタンス上に確立され、ユーザーを少人口化されたインスタンスに転送します。私はクラスタを使って何かをビルドしようとしましたが、同じポート上で新しいプロセスを作成するように見えます。すべてのユーザーをたとえばhttp://exmaple.com:3000
に接続してから、可能な4つのポートのうちの1つに転送するにはどうすればよいですか[3001, 3002, 3003, 3004]
?
現在のサーバアプローチ:
var cluster = require('cluster');
var numCPUs = require('os').cpus().length;
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');
});
} else {
var http = require('http'),
_io = require('socket.io'),
server = http.createServer();
server.listen('3000', 'example.com');
var io = _io.listen(server);
var connections = {},
msg_sent = 0;
io.on('connection', function(socket) {
connections[socket.id] = new Date().getTime();
socket.on('client-request', function(msg) {
msg_sent++;
});
socket.on('disconnect', function() {
delete connections[socket.id];
});
});
setInterval(function() {
console.log('Active connections: ', Object.keys(connections).length, 'Messages sent: ', msg_sent);
}, 1000);
}
を行うだろう、これは本当に良い考えである、唯一の問題は、サーバー間で負荷を分散する方法となり、あなたはどんな考えを持っていますどのように? – Mevia
@mevia thatsラウンドロビンのこと。接続が多い場合、ワークロードはサーバ間で均等に分散されます... –