我用node-lws(用c编写的轻量级套接字的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%未使用?
通过以下命令检查本地端口的范围。
$ cat /proc/sys/net/ipv4/ip_local_port_range
您可能会看到两个数字,本地端口的下限和上限。
通常,范围的初始设置是从32768到61000,即给出28233种端口号。
您可以将下限更改为 11001,以获得 50000 个连接。