当前位置: 技术问答>linux和unix
linux上socket连接的TIME_WAIT能避免产生么?
来源: 互联网 发布时间:2016-06-30
本文导语: 如题: 出现了大量的timewait, 用这种方法还是存在: linger m_sLinger; m_sLinger.l_onoff = 1; // 在closesocket()调用,但是还有数据没发送完毕的时候容许逗留 m_sLinger.l_linger = 0; // 容许逗留的时间为0秒 set...
如题: 出现了大量的timewait,
用这种方法还是存在:
linger m_sLinger;
m_sLinger.l_onoff = 1; // 在closesocket()调用,但是还有数据没发送完毕的时候容许逗留
m_sLinger.l_linger = 0; // 容许逗留的时间为0秒
setsockopt(sd,
SOL_SOCKET,
SO_LINGER,
&m_sLinger,
sizeof(m_sLinger));
setsockopt(sd, SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof(reuse));
用这种方法还是存在:
linger m_sLinger;
m_sLinger.l_onoff = 1; // 在closesocket()调用,但是还有数据没发送完毕的时候容许逗留
m_sLinger.l_linger = 0; // 容许逗留的时间为0秒
setsockopt(sd,
SOL_SOCKET,
SO_LINGER,
&m_sLinger,
sizeof(m_sLinger));
setsockopt(sd, SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof(reuse));
|
不能避免,但这个时间可以查询及更改
cat /proc/sys/net/ipv4/tcp_fin_timeout
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
cat /proc/sys/net/ipv4/tcp_fin_timeout
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
|