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

时间:2016-02-24 08:30:18

标签: linux node.js sockets websocket

我构建了一个带有node-lws的套接字服务器(用c编写的lightweightsocket的js api),服务器代码:

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%未使用?

1 个答案:

答案 0 :(得分:0)

按照以下命令检查本地端口的范围。

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

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

通常,范围的初始设置为32768到61000,这些设置提供了28233种端口号。

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