如何解决单台服务器上的 Windows 或 Linux 系统耗尽 tcp/udp 端口的问题?由于 SQL 连接、用户连接到互联网的用户连接以及充当网关,我在单台服务器上使用了大约 65000 个 tcp/udp 端口。
答案1
我建议规划角色分离(除非网关要求 SQL 位于同一主机上)——不是因为端口用完了。如果网关不需要 SQL 和/或它保存着公司数据,那么位于网关节点上的风险就很大。
说到 TCP,有很多可用端口。您可能(忽略端口共享之类的事情)只为每个地址绑定 2 个16端口,但每个地址的活动连接可能会多得多。
你可以处理数千个连接,甚至单身的TCP 端口-连接由多个参数定义:
源IP:源端口:目标IP:目标端口。
一个重要的参数可能是半开连接——如果您的某个服务出现问题,它可能会影响系统上运行的其他服务。 您可以在这里获得更多信息。
答案2
听起来像是一个扮演重要角色的重负载服务器。
您可以使用多个以太网接口 - 这也能获得物理扩展。
您可以在任何接口上使用多个 IP 地址 - 简单的软件解决方案。
我最终也会建议使用代理/NAT
答案3
如果负载太大,则将服务器角色拆分给其他服务器。
例如,在 Windows 中,如果您虚拟化 Windows Server 标准许可证,则可以在虚拟中免费获得两个正在运行的实例(1:2)
提供更多物理接口或虚拟 IP 的其他想法可能会在短期内有所帮助,但拥有这样的角色(SQL、网关和用户与互联网的连接)并不是一个好主意。
例如,如果用户感染了恶意软件并淹没了您的网关,它将会关闭服务器上的其他服务。
答案4
TCP/UDP 中只有 65,535 个可用端口。这是 IP(协议)固有的限制。
您可以通过为打开所有这些连接的机器分配多个 IP 地址来解决该限制。