我有一个服务器有大量的TIME_WAIT会话。 这些是服务器closures的会话,但客户端没有closures。
我想分析一个示例会话,了解发生了什么。 tcpdump输出的简单的“powershell”分析是不成效的,因为大多数会话都是closures的。
有没有办法只挖掘导致TIME_WAIT的连接?
TIME_WAIT状态下连接的存在意味着您的服务器是其closures阶段的发起者。 它防止接受延迟段,并确保另一端已正确closures连接。
在大多数情况下它们应该不是一个问题,它取决于服务器提供的服务。 大量的TIME_WAIT连接的主要问题是内存消耗,其中40 000个只占10MB左右。
如果你认为在你的具体情况下可能会造成危害,你可以使用iproute2中的ss来查看哪些元组是罪魁祸首:
$ ss -tan state time-wait
然后,使用wireshark等工具,可以使用类似于以下filter的方式轻松分析与该元组对应的TCPstream:
tcp.port == <port> and ip.addr == <ip>
您还可以使用wireshark中的“遵循TCPstream”function,该function将向您显示该特定连接的每个段。