全部產品
Search
文件中心

Alibaba Cloud Linux:Alibaba Cloud Linux 2系統的ECS執行個體執行ss命令時返回的Send-Q欄位值為0的解決方案

更新時間:May 10, 2025

本文介紹了Alibaba Cloud Linux 2系統的ECS執行個體執行ss命令時返回的Send-Q欄位值為0的原因及解決方案。

問題描述

在符合如下條件的ECS執行個體中執行ss -lnt命令時,返回的Send-Q欄位值為0。

  • 鏡像:aliyun-2.1903-x64-20G-alibase-20190507.vhd及之前的版本。

  • 核心:4.19.43-13.al7.x86_64及之前的核心版本。您可以通過uname -r命令來查看核心版本。

系統顯示類似如下。

# ss -lnt
State       Recv-Q Send-Q                            Local Address:Port                                           Peer Address:Port
LISTEN      0      0                                             *:35107                                                     *:*
LISTEN      0      0                                             *:38727                                                     *:*
LISTEN      0      0                                             *:5355                                                      *:*
LISTEN      0      0                                             *:111                                                       *:*

查看ss命令的說明發現,針對處於監聽中(listening)的TCP Socket,Send-Q欄位表示該Socket的syn backlog最大值。在Linux系統中,該欄位實際輸出該listening Socket全串連隊列的最大容量,所以其值不應該為0。

問題原因

kernel-4.19.43-13.al7.x86_64及之前版本的核心未整合tcp_diag模組,因此ss命令會回退到/proc/net/tcp模式。使用/proc/net/tcp模式(不推薦使用)時,輸出結果中listening TCP Sockettx_queue欄位值均為0,導致ss -lnt命令輸出的Send-Q欄位值也為0

解決方案

警告
  • 升級核心可能會出現相容性和穩定性問題,建議您查看Alibaba Cloud Linux 2鏡像發布記錄瞭解具體核心功能後謹慎進行操作。

  • 重啟執行個體將導致您的執行個體暫停運行,這可能引發業務中斷和資料丟失。因此,建議您在執行此操作之前備份關鍵資料,並選擇在非業務高峰期進行。

  1. 執行以下命令,確認沒有查詢到tcp_dial模組。

    sudo lsmod | grep tcp_diag
  2. 執行以下命令,升級核心到最新版本。

    sudo yum update kernel
  3. 執行以下命令,重啟執行個體使配置生效。

    sudo reboot