全部產品
Search
文件中心

Alibaba Cloud Linux:修改TCP TIME-WAIT逾時時間以提升網路效能

更新時間:Jul 17, 2024

在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],單位為秒。

注意事項

TCP/IP協議TIME-WAIT狀態期間修改為小於60秒與TCP/IP協議quiet time概念相違背,可能導致您的系統將舊資料當做新資料接收,或者複製的新資料當做舊資料拒絕。因此請在網路專家建議下調整。瞭解TCP/IP協議quiet time的相關概念,請參見IETF RFC 793標準

配置方法

您可以通過以下三種方式修改TIME-WAIT逾時時間,其中參數[$TIME_VALUE]為您修改的TIME-WAIT逾時時間。

警告

修改參數[$TIME_VALUE]可能會存在業務不可用風險,可能導致業務中斷,建議您在非業務高峰期時執行該操作。

  • 通過sysctl命令修改TIME-WAIT逾時時間。該方法即時生效,無法持久化

    sudo sysctl -w "net.ipv4.tcp_tw_timeout=[$TIME_VALUE]"
  • 通過echo命令將值修改到/proc/sys/net/ipv4/tcp_tw_timeout介面中。該方法即時生效,無法持久化

    sudo sh -c "echo [$TIME_VALUE] > /proc/sys/net/ipv4/tcp_tw_timeout"
  • 通過編輯/etc/sysctl.conf檔案修改net.ipv4.tcp_tw_timeout參數。該方法即時生效,且修改可以持久化。這意味著一旦系統重啟,所做的修改仍然保留。具體操作步驟如下:

    1. 執行以下命令,開啟 sysctl.conf 檔案。

      sudo vim /etc/sysctl.conf
    2. 按 i 鍵進入編輯模式。在檔案末尾添加或修改對應的行。

      net.ipv4.tcp_tw_timeout = [$TIME_VALUE]
    3. Esc 鍵,輸入:wq後按Enter鍵,儲存配置。

    4. 執行以下命令,使配置生效。

      sudo sysctl -p
    5. 執行以下命令,查看tcp_tw_timeout(TIME_WAIT狀態的逾時時間)的當前值。

      sysctl net.ipv4.tcp_tw_timeout
說明

您可以通過運行netstat -ant | grep TIME_WAIT | wc -l命令判斷伺服器中是否存在大量短串連。

例如,在Nginx配置7層代理等存在大量短串連的情境下,阿里雲推薦您將[$TIME_VALUE]值設定為5,代表TIME-WAIT逾時時間被修改為5s。