Linux端口耗尽预警

som*_*ser 5 port load-balancing netstat tcp linux-networking

AFAIK,当主机尝试与另一台服务器建立大量连接并且会话耗尽了所有可用的临时端口时,就会发生端口耗尽。例如

192.168.1.1:端口 -> 10.20.30.40:443

这看起来并不常见,但对于负载均衡器来说这是一个问题。我的问题是,有没有办法获得即将到来的预警?

我知道我可以使用 netstat 来获取所有连接,但是如果有数万个连接。运行命令、对目标进行排序并计算共享相同客户端 IP、服务器 IP 和服务器端口的连接数将需要相当多的资源。并定期进行。

有更容易的方法吗?当 TCP 堆栈分配端口时,它是否可以知道它在散列未使用的端口并生成错误或日志时遇到问题?

小智 3

您可以使用 bpftrace 编写 bpf 软件来监视所有连接的打开和关闭,并维护每个客户端、服务器、服务器端口组合的计数器。这对于用例来说似乎过于复杂。切片和切块 /proc/net/tcp{,6} (与 netstat 显示的数据相同)似乎相当快,并且肯定会在亚秒级时间内在具有数万个连接的机器上完成。