18.04.3 大約 120,000 個活動連接後,伺服器停止接受連接

18.04.3 大約 120,000 個活動連接後,伺服器停止接受連接

我正在運行一種效能測試,其中有一個帶有 4 個 IP 位址的簡單 TCP 伺服器,該伺服器正在偵聽連接埠並從本地網路上的其他幾台電腦獲取連接。一切工作正常,直到有不到 120,000 個活動連接,客戶端能夠從客戶端獲取訊息並建立新連接。在接近 120,000 的時候,新的連接就不再出現了。伺服器上沒有日誌活動,且客戶端稍後開始逾時。沒有防火牆會妨礙。我已經調整了很多設定:

/etc/sysctl.conf

net.core.netdev_max_backlog = 1000000

net.core.netdev_budget = 50000
net.core.netdev_budget_usecs = 5000

net.core.somaxconn = 1024000

net.core.rmem_default = 1048576
net.core.rmem_max = 16777216

net.core.wmem_default = 1048576
net.core.wmem_max = 16777216

net.core.optmem_max = 65536

net.ipv4.tcp_rmem = 4096 1048576 2097152
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.udp_rmem_min = 8192
net.ipv4.udp_wmem_min = 8192
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_max_syn_backlog = 3000000
net.ipv4.tcp_max_tw_buckets = 2000000

net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_keepalive_time = 60
net.ipv4.tcp_keepalive_intvl = 10
net.ipv4.tcp_keepalive_probes = 6
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_rfc1337 = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1

/etc/security/limits.conf

* soft nofile 6553600
* hard nofile 6553600
cat /proc/sys/fs/file-max
1621708

這些限制是故意完全矯枉過正的,因為這只是一個測試。我是否缺少其他一些可以啟用更多連接的設定? CPU 和 RAM 都沒有受到壓力,所以我想繼續推動硬體。伺服器和用戶端都在 AWS EC2 t3a.xlarge 執行個體上執行(如果這有什麼區別的話)。

答案1

事實證明這是 AWS 的限制。顯然,同一 VPC 內的 EC2 執行個體之間的對話的活動連線限制約為 120,000 個。讓他們使用公共IP進行通訊就擺脫了限制。我在 Ubuntu 中沒有收到任何錯誤,因為作業系統沒有限制任何東西。

相關內容