netstat输出显示许多连接处于 CLOSE_WAIT 状态?

这篇文章将提供有关报告“CLOSE_WAIT”状态的 TCP 连接的详细信息。
TCP 套接字的可能状态值如下:

BOUND绑定,准备连接或者收听。
CLOSED关闭。 未使用套接字。
CLOSING关闭,然后远程关机; 等待确认。
CLOSE_WAIT远程关机; 等待套接字关闭。
ESTABLISHED连接已建立。
FIN_WAIT_1套接字关闭; 关闭连接。
FIN_WAIT_2套接字关闭; 等待远程关机。
IDLE空闲,打开但未绑定。
LAST_ACK远程关机,然后关闭; 等待确认。
LISTEN侦听传入连接。
SYN_RECEIVED接收到主动/启动同步并且正在进行连接
SYN_SENT积极尝试建立连接。
TIME_WAIT关闭后等待远程关机重传。

'CLOSE_WAIT' 状态意味着连接的另一端已经关闭,而本地端仍在等待应用程序关闭。

欢迎来到之路教程(on itroad-com)

细节

'CLOSE_WAIT' 状态在 tcp 连接上发生,如果系统在收到来自其他系统的通知('FIN' 数据包)后,它没有收到来自应用程序的关闭系统调用,它已经关闭了它的端点。
换句话说,这意味着连接的本地端已收到来自另一端的“FIN”,但操作系统正在等待本地端的程序实际关闭其连接。

问题是在本地机器上运行的程序没有关闭套接字。
这不是 TCP 调整问题。
当程序保持连接打开时,连接可以永远保持在“CLOSE_WAIT”状态。
所以这个问题的发生主要是由于应用程序错误。
但是,如果 TCP/IP 参数设置不正确,关闭的 TCP/IP 连接将在各种“关闭”状态中停留很长时间,这些状态会从进程中获取文件描述符。
为了解决这个问题,有时需要调整/etc/sysctl.conf中的TCP/IP参数(比如那些net.ipv4.tcp_xxx参数),让TCP/IP连接在短时间内关闭.

日期:2020-09-17 00:14:45 来源:oir作者:oir