Cur*_*ind 1 scalability load-balancing nginx c10k websocket
我有一个简单的 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)
Run Code Online (Sandbox Code Playgroud)
该服务器需要 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";
}
}
Run Code Online (Sandbox Code Playgroud)
端口 8000 只能容纳 65k 连接。
如何实时处理此类情况。我是这里的业余爱好者,需要一些好的指导来扩展服务器。该解决方案不一定非要使用 nginx。它可以是任何东西。我只是想知道,如何处理此类问题。详细答案表示赞赏。谢谢。
小智 5
65535 端口的限制仅适用于传出连接,不适用于传入连接。
操作系统通过以下四个属性唯一标识连接/套接字:
因此,对于单个 IP 地址, Node.js 或 Nginx 服务器最多可以维持 65535 个连接。对于不同的客户端 IP,唯一的限制是服务器的 CPU 和 RAM 资源。
也许您从单个客户端测试了这种行为?在这种情况下,您会遇到源 TCP 端口的限制。尝试从不同的客户端进行测试,您的服务器应该可以在超过 65535 个连接的情况下正常工作。
| 归档时间: |
|
| 查看次数: |
1447 次 |
| 最近记录: |