修改 TCP 的 TIME-WAIT 超时时间

发布于 2025-03-08 22:52:46 字数 1699 浏览 2 评论 0

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

背景信息

TCP/IP 协议的 TIME-WAIT 状态是指应用关闭用于通信的套接口(socket)之后,TCP/IP 协议栈保持 socket 处于打开状态。该状态默认持续 60 秒,用来保证完成服务器和客户端的数据传输。当处于 TIME-WAIT 状态的连接数过多时,可能会影响到网络性能。因此 Alibaba Cloud Linux 2 提供了可修改 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]"
    
  • 以 root 权限使用
    echo
    

    命令,将值修改到

    /proc/sys/net/ipv4/tcp_tw_timeout
    

    接口中。

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

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

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

sysctl -w "net.ipv4.tcp_tw_timeout=5"
echo 5 > /proc/sys/net/ipv4/tcp_tw_timeout

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

恰似旧人归

暂无简介

文章
评论
29 人气
更多

推荐作者

佚名

文章 0 评论 0

今天

文章 0 评论 0

゛时过境迁

文章 0 评论 0

达拉崩吧

文章 0 评论 0

呆萌少年

文章 0 评论 0

孤者何惧

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文