我有一台 SLES 机器,它在 CLOSE_WAIT 状态下累积 TCP 连接,似乎是永远的。这些描述符最终会占用所有可用内存。目前,我有 3037 个,但在最近快速重启之前它要高得多。
有趣的是,它们不是来自我希望有侦听进程的本地端口的连接。它们没有关联的 PID,并且它们的计时器似乎已过期。
# netstat -ton | grep CLOSE_WAIT
tcp 176 0 10.0.0.60:54882 10.0.0.12:31663 CLOSE_WAIT off (0.00/0/0)
tcp 54 0 10.0.0.60:60957 10.0.0.12:4503 CLOSE_WAIT off (0.00/0/0)
tcp 89 0 10.0.0.60:50959 10.0.0.12:3518 CLOSE_WAIT off (0.00/0/0)
# netstat -tonp | grep CLOSE_WAIT
tcp 89 0 10.0.0.59:45598 10.0.0.12:1998 CLOSE_WAIT -
tcp 15 0 10.0.0.59:60861 10.0.0.12:1938 CLOSE_WAIT -
tcp 5 0 10.0.0.59:56173 10.0.0.12:1700 CLOSE_WAIT -
Run Code Online (Sandbox Code Playgroud)
当涉及到 TCP 堆栈或内核网络时,我不是黑带,但 TCP 配置似乎很合理,因为根据手册页,这些值是默认值:
# cat /proc/sys/net/ipv4/tcp_fin_timeout
60
# cat /proc/sys/net/ipv4/tcp_keepalive_time …
Run Code Online (Sandbox Code Playgroud)