我有一个简单的节点js web socket服务器,如下所示:
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连接)。如何扩展服务器以使其可以连接超过100k?
我最近打开了三个具有不同端口的服务器并尝试使用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。它可以是任何东西。我只是想知道,如何处理这些问题。详细解答表示赞赏。感谢。
答案 0 :(得分:3)
65535端口的限制仅适用于传出连接,而不适用于传入连接。
操作系统通过以下四个属性唯一标识连接/套接字:
因此,对于单个IP地址,Node.js或Nginx服务器最多可以保持65535个连接。在不同的客户端IP中,唯一的限制是服务器的CPU和RAM资源。
也许您是从单个客户端测试过这种行为?在这种情况下,您遇到了源TCP端口的限制。尝试从不同的客户端进行测试,您的服务器应该可以正常工作,连接超过65535个。