netstat中Send -Q Recv -Q的意思
时间:2013-09-08 10:09:04 作者:beebol 标签: 分类: Linux基础
Send -Q Recv -Q
Send -Q 对方没有收到的数据或者说没有Ack的,还是本地缓冲区.
Recv -Q 数据已经在本地接收缓冲,但是还没有recv(). CLOSE_WAIT
对方主动关闭连接或者网络异常导致连接中断,这时我方的状态会变成CLOSE_WAIT 此时我方要调用close()来使得连接正确关闭
TIME_WAIT
我方主动调用close()断开连接,收到对方确认后状态变为TIME_WAIT。TCP协议规定TIME_WAIT状态会一直持续2MSL(即两倍的分 段最大生存期),以此来确保旧的连接状态不会对新连接产生影响。处于TIME_WAIT状态的连接占用的资源不会被内核释放,所以作为服务器,在可能的情 况下,尽量不要主动断开连接,以减少TIME_WAIT状态造成的资源浪费。
目前有一种避免TIME_WAIT资源浪费的方法,就是关闭socket的LINGER选项。但这种做法是TCP协议不推荐使用的,在某些情况下这个操作 可能会带来错误。
/proc/sys/net/ipv4/tcp_fin_timeout 如 果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2 状态的时间。对端可以出错并永远不关闭连接,甚至意外当机。缺省值是60 秒。2.2 内核的通常值是180 秒,你可以按这个设置,但要记住的是,即使你的机器是一个轻载的WEB 服务器,也有因为大量的死套接字而内存溢出的风险,FIN- WAIT-2 的危险性比FIN-WAIT-1 要小,因为它最多只能吃掉1.5K 内存,但是它们的生存期长些。参见tcp_max_orphans 。
/proc/sys/net/ipv4/tcp_keepalive_time 当keepalive 起用的时候,TCP 发送keepalive 消息的频度。缺省是2 小时。 /proc/sys/net/ipv4/tcp_keepalive_intvl 当 探测没有确认时,重新发送探测的频度。缺省是75 秒。 /proc/sys/net/ipv4/tcp_keepalive_probes在 认定连接失效之前,发送多少个TCP 的keepalive 探测包。缺省值是9 。这个值乘以tcp_keepalive_intvl 之后决定了,一个连接发送了keepalive 之后可以有多少时间没有回应。 在 认定连接失效之前,发送多少个TCP 的keepalive 探测包。缺省值是9 。这个值乘以tcp_keepalive_intvl 之后决定了,一个连接发送了keepalive 之后可以有多少时间没有回应。