如何在一个端口上发出超过65k的请求



我有一个简单的node js web套接字服务器如下:

var ws = require("nodejs-websocket")
var connectionCount = 0;
console.info("Node websocket started @ 8001");
var server = ws.createServer(function (conn) {;
    console.log("New connection", ++connectionCount);
    conn.on("close", function (code, reason) {
        console.log("Connection closed")
    });
}).listen(8001)

该服务器需要65k个连接(一个端口最多需要65k个连接)。我怎样才能扩展服务器,使它可以容纳超过10万个连接?

我最近用不同的端口打开了三个这样的服务器,并试图使用nginx做负载平衡,但无济于事,因为nginx服务器也只能接受65000个连接。nginx配置在这里

upstream localhost {
    server localhost:8001;
    server localhost:8002;
    server localhost:8003;
}

server {
    proxy_read_timeout 3600s;
    listen 8000;
    location / {
            proxy_pass http://localhost;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
    }
}

端口8000只能接受65000个连接。

这些情况是如何实时处理的?我是这里的业余爱好者,需要一些好的指针来扩展服务器。解决方案不一定要使用nginx。它可以是任何东西。我只是想知道,如何处理这类问题。请详细回答。谢谢。

65535端口的限制只适用于传出连接,不适用传入连接。

操作系统通过以下四个属性唯一地标识连接/套接字:

  • 源IP地址
  • 源TCP端口目的
  • 服务器IP地址
  • 服务器TCP端口

所以对于一个单一的IP地址你的Node.js或Nginx服务器可以维持最多65535个连接。在不同的客户端ip中,唯一的限制是服务器的CPU和RAM资源。

也许您从单个客户端测试了此行为?在这种情况下,您遇到了源TCP端口的限制。试着从不同的客户端测试,你的服务器应该工作得很好,超过65535的连接。

相关内容

  • 没有找到相关文章

最新更新