繁体   English   中英

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

[英]How to make more than 65k request on a port

我有一个简单的节点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服务器也只能进行65k连接。 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只能连接65k。

这些情况如何实时处理。 我在这里很业余,需要一些很好的指针来扩展服务器。 解决方案不必使用nginx。 可以是任何东西。 我只想知道如何处理这类问题。 详细的答案表示赞赏。 谢谢。

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

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

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

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

也许您从单个客户端测试了此行为? 在这种情况下,您会遇到源TCP端口的限制。 尝试从不同的客户端进行测试,并且服务器在超过65535个连接的情况下应该可以正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM