すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud Linux:What do I do if the Send-Q return value is 0 after an ss command is run on an Alibaba Cloud Linux 2 instance?

最終更新日:May 21, 2025

このトピックでは、Alibaba Cloud Linux 2 Elastic Compute Service (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 コマンドでは、Send-Q パラメーターは、リスニング TCP ソケットの syn backlog の最大サイズを示します。 Linux では、その戻り値は listening socket 上のすべての接続の最大キューサイズであり、0 にはなりません。

原因

tcp_diag モジュールは、カーネルバージョン kernel-4.19.43-13.al7.x86_64 以前には統合されていません。そのため、インスタンス上の ss コマンドは、/proc/net/tcp モードにフォールバックします。このモード (推奨されません) が使用されている場合、ss -lnt コマンド出力の listening TCP Sockettx_queue 値は 0 になり、Send-Q 戻り値も 0 になります。

解決策

警告
  • カーネルのアップグレードは、互換性と安定性の問題を引き起こす可能性があります。 Alibaba Cloud Linux 2 のリリースノート でカーネルの機能をよく理解し、カーネルバージョンをアップグレードする際には注意が必要です。

  • 再起動操作により、インスタンスが短時間停止し、インスタンス上で実行されているサービスが中断され、データ損失が発生する可能性があります。そのため、インスタンスを再起動する前に、重要なインスタンスデータをバックアップすることをお勧めします。また、オフピーク時にインスタンスを再起動することをお勧めします。

  1. tcp_diag モジュールを確認します。

    sudo lsmod | grep tcp_diag
  2. カーネルを最新バージョンにアップグレードします。

    sudo yum update kernel
  3. 新しいカーネルバージョンを有効にするために、インスタンスを再起動します。

    sudo reboot