跳到主要内容

计算机网络

TCP

TIME_WAIT

TIME_WAIT描述

TIME_WAIT的作用:

  1. 防止连接关闭时四次挥手中的最后一次ACK丢失
  2. 防止新连接收到旧连接的TCP报文

服务器出现大量TIME_WAIT的原因:

  1. 使用了持续且大量的短连接,如爬虫服务器。
  2. http请求中connection的值被设置成close。

服务端出现大量TIME_WAIT时要如何解决:

  1. 把短连接改为长连接
  2. 避免不必要的关闭连接操作
  3. 调整服务器的TCP参数,如减少TIME_WAIT状态的持续时间
  4. 修改 ip_local_port_range,增大可用端口范围
  5. 客户端程序设置 SO_LINGER 选项(???)
  6. 打开 tcp_tw_reusetcp_timestamp 选项
  7. 设置 tcp_max_tw_buckets 为较小的值。该选项作用是:当系统中TIME_WAIT连接超出该值时,系统将所有的TIME_WAIT连接状态重置。
  8. 使用负载均衡,将连接分布到多台服务器上,从而降低单台服务器上TIME_WAIT状态的数量。

HTTP