计算机网络
TCP
TIME_WAIT
TIME_WAIT描述
TIME_WAIT的作用:
- 防止连接关闭时四次挥手中的最后一次ACK丢失
- 防止新连接收到旧连接的TCP报文
服务器出现大量TIME_WAIT的原因:
- 使用了持续且大量的短连接,如爬虫服务器。
- http请求中connection的值被设置成close。
服务端出现大量TIME_WAIT时要如何解决:
- 把短连接改为长连接
- 避免不必要的关闭连接操作
- 调整服务器的TCP参数,如减少TIME_WAIT状态的持续时间
- 修改
ip_local_port_range
,增大可用端口范围 - 客户端程序设置
SO_LINGER
选项(???) - 打开
tcp_tw_reuse
和tcp_timestamp
选项 - 设置
tcp_max_tw_buckets
为较小的值。该选项作用是:当系统中TIME_WAIT连接超出该值时,系统将所有的TIME_WAIT连接状态重置。 - 使用负载均衡,将连接分布到多台服务器上,从而降低单台服务器上TIME_WAIT状态的数量。