簡體   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