linux - 如何增加 linux 上的最大套接字连接数?

标签 linux node.js sockets websocket

我用node-lws搭建了一个socket服务器(轻量级socket的js api用c写的),服务器代码:

var lws = require('lws');
var server = new lws.Server({ port: 8000 });
var con = 0;
server.on('connection', function (socket) {
    con++;
    console.log(con);
});

下面是带有websocket和Promise的客户端:

var max = 50000;
var num = 1;
var WebSocketClient = require('websocket').client;
function it(){
    var promise = new Promise(function (resolve, reject) {
            var client = new WebSocketClient();
            client.on('connect', function(connection) {
                    console.log("connected to warshou:" + num);
                    resolve();
            });
            client.connect('ws://localhost:8000/');
    });
    promise.then(function (message) {
            num++;
            if(num <= max){
                    it();
            }
    },function (error) {
            //console.log(error);
    });
}
it();

我在同一个 linux 上运行服务器和客户端。 我只想知道服务器可以允许多少个连接。 现在我运行代码,连接数为 4080;

然后我进行以下更改:

ulimit -HSn 102400

并将以下内容附加到/etc/security/limits.conf:

* soft nofile 102400
* hard nofile 102400

并将以下内容附加到/etc/sysctl.conf:

echo 3000000 > /proc/sys/fs/file-max
sysctl -p

我重新启动服务器和客户端,连接数可以达到 28233 为什么不能达到50000,当前内存有70%未使用?

最佳答案

通过以下命令查看本地端口范围。

$ cat /proc/sys/net/ipv4/ip_local_port_range

你可能会看到两个数字,本地端口的下限和上限。

通常,初始设置的范围是从32768到61000,即给出28233种端口号。

您可以将下限更改为 11001 以获得 50000 个连接。

关于linux - 如何增加 linux 上的最大套接字连接数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35596940/

相关文章:

c++ - 即使设置为 PTHREAD_PROCESS_SHARED,Pthread 条件变量也不会发出信号

linux - Rsyslog 将消息部分中的换行符替换为 <br/>

node.js - NodeJs Buffer.toString() 在 7.x 和 8.x 版本中得到不同的结果(模块 crypto)

javascript - pipe(Node.js 的流)和 bl(BufferList)如何协同工作?

c - 套接字:如何使用 inet_pton() 屏蔽二进制形式的 ip 地址

python - 为什么这个 Python 代码不能通过 SSL 连接?

linux - 使用具有给定 PID 的 bg 和 fg

c++ - 如何获取系统调用的参数列表及其类型?

node.js - Babel 并将 Nodejs 部署到 Google App Engine

c# - udpclient可以同时是组播和单播吗