gpt4 book ai didi

node.js - 在 AWS Node socketcluster 上无法连接超过 1000 个连接

转载 作者:搜寻专家 更新时间:2023-10-31 22:52:28 25 4
gpt4 key购买 nike

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

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

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

建议的 Posix 软限制 Node.js maxing out at 1000 concurrent connections没有帮助。

其他 sysctl 参数在我的本地 ubuntu 和 EC2 实例之间没有太大差异。

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

是否有任何 AWS 环境变量会影响性能?进出 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 设置的交换机/isp-connection 无法处理许多连接。

关于node.js - 在 AWS Node socketcluster 上无法连接超过 1000 个连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28947100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com