在AWS节点上,socketcluster无法连接超过1000个连接

我正在运行一个简单的socketcluster node.js服务器并从node.js websocket客户端连接到它。

通过在本地Ubuntu14.04上运行服务器,我可以连接超过10,000个客户端到服务器。 但在AWS EC2(c3-large)ubuntu14.04实例上,相同的代码仅连接less于1000个连接。

修改了etc / security / limits.conf,并在EC2实例上将“soft nofile”和“hard nofile”的限制设置为65535。

Posix的软限制build议Node.js超过1000个并发连接不起作用。

其他的sysctl参数在我的本地ubuntu和EC2实例之间差别不大。

延迟可能不是问题,因为我尝试从多台客户机连接到服务器,但连接数仍然<1000。

是否有任何可能影响性能的AWS环境variables? 来自和来自EC2的消息数量可能是一个限制?

var posix = require('posix'); posix.setrlimit('nofile', {soft:10000}); var SocketCluster = require('socketcluster').SocketCluster; var numCPUs = require('os').cpus().length; var numWorkers = numCPUs; var start = Date.now(); console.log("..... Starting Server...."); process.on('uncaughtException', function (err) { console.log("***** SEVERE ERROR OCCURED!!! *****"); console.log(err); }); var socketCluster = new SocketCluster({ balancers: 1, workers: numWorkers, stores: 1, port: 7000, appName: 'mysimapp', workerController: __dirname + '/sim_server.js', addressSocketLimit: 0, socketEventLimit: 100, rebootWorkerOnCrash: true, useSmartBalancing: true }); 

–sim_server.js–

 module.exports.run = function(worker) { var posix = require('posix'); posix.setrlimit('nofile', {soft:10000}); var connection_db = {}; var opencount = 0; var closecount = 0; var msgcount = 0; function status() { console.log('open: ' + opencount); console.log('close: ' + closecount); //console.log('receive: ' + msgcount); setTimeout(function(){ status(); },10000); } status(); websocket_server = worker.getSCServer(); websocket_server.on('connection', function(socket){ var mac; socket.on('mac-id', function(data) { opencount++; mac = data; connection_db[mac] = socket; }); socket.on('message', function(data) { msgcount++; }); socket.on('close', function() { delete connection_db[mac]; closecount++; }); }); process.once('SIGINT', function() { process.exit(0); }); } 

我的糟糕的是,代码或AWS没有任何问题。 在我的设置中,用于AWS安装的switch / isp连接无法处理多个连接。