文档

修改TCP TIME-WAIT超时时间

更新时间:
重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

在Linux的内核中,TCP/IP协议的TIME-WAIT状态持续60秒且无法修改。但在某些场景下,例如TCP负载过高时,适当调小该值有助于提升网络性能。因此Alibaba Cloud Linux 2(内核版本4.19.43-13.al7开始)和Alibaba Cloud Linux 3新增内核接口用于修改TCP TIME-WAIT超时时间。本文主要介绍该接口的使用方法。

背景信息

TCP/IP协议的TIME-WAIT状态是指应用关闭用于通信的套接口(socket)之后,TCP/IP协议栈保持socket处于打开状态。该状态默认持续60秒,用来保证完成服务器和客户端的数据传输。当处于TIME-WAIT状态的连接数过多时,可能会影响到网络性能。因此Alibaba Cloud Linux提供了可修改TIME-WAIT超时时间的接口,用于在特定场景提高网络性能。例如,高并发业务场景。该接口的取值范围为[1, 600],单位为秒。如果不修改该接口,TIME-WAIT超时时间的默认值保持60秒不变。

注意事项

将TCP TIME-WAIT超时时间修改为小于60秒与TCP/IP协议quiet time概念相违背,可能导致您的系统将旧数据当做新数据接收,或者复制的新数据当做旧数据拒绝。因此请在网络专家建议下调整。了解TCP/IP协议quiet time的相关概念,请参见IETF RFC 793标准

配置方法

您可以通过以下两种方式修改TIME-WAIT超时时间,其中参数[$TIME_VALUE]为您修改的TIME-WAIT超时时间。

  • 通过sysctl命令修改TIME-WAIT超时时间。

    sysctl -w "net.ipv4.tcp_tw_timeout=[$TIME_VALUE]"
  • 通过echo命令将值修改到/proc/sys/net/ipv4/tcp_tw_timeout接口中。

    echo [$TIME_VALUE] > /proc/sys/net/ipv4/tcp_tw_timeout

您可以通过运行netstat -ant | grep TIME_WAIT | wc -l命令判断服务器中是否存在大量短连接。

例如,在Nginx配置7层代理等存在大量短连接的场景下,阿里云推荐您将TIME-WAIT超时时间修改为5s。运行以下任一命令修改超时时间:

警告

修改参数[$TIME_VALUE]会存在业务不可用风险,可能导致业务中断,建议您在非业务高峰期时执行该操作。

  • sysctl -w "net.ipv4.tcp_tw_timeout=5"
  • echo 5 > /proc/sys/net/ipv4/tcp_tw_timeout
  • 本页导读 (1)
文档反馈