我有一个简单的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的连接。