Aliyun Linux 2系统的ECS实例执行ss命令时返回的Send-Q字段值为0

Aliyun Linux 2系统的ECS实例执行ss命令时返回的Send-Q字段值为0

更新时间:2020-02-25 17:17:01

问题描述

在符合如下条件的ECS实例中执行ss -lnt命令时,返回的Send-Q字段值为0。

  • 镜像:aliyun-2.1903-x64-20G-alibase-20190507.vhd及之前的版本。
  • 内核:kernel-4.19.43-13.al7.x86_64及之前的内核版本。

系统显示类似如下。

# 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”。

Send-Q
       Established:  The  count  of bytes not acknowledged by the remote host.  
       Listening: Since Kernel 2.6.18 this column contains the maximum
       size of the syn backlog.

 

问题原因

ss -lnt命令输出的Send-Q字段表示listening TCP socket全连接队列的最大容量。用户态network相关的工具套件有net-tools与iproute2两种,其中net-tools自2001年已经停止维护,取而代之的是iproute2套件。而ss命令正是iproute2套件的一部分,net-tools中与ss实现类似功能的则是netstat。

  • netstat通过/proc/net/tcp接口获取TCP socket的相关统计信息。
  • ss默认使用socket接口与tcp_diag内核模块通讯,获取TCP socket的相关统计信息。当内核不支持tcp_diag内核模块时,会回退到/proc/net/tcp模式。

kernel-4.19.43-13.al7.x86_64及之前的内核版本未集成tcp_diag模块,因此ss命令会回退到/proc/net/tcp模式,而/proc/net/tcp接口(不推荐使用)输出结果中listening TCP socket的tx_queue字段值均为“0”,从而导致ss -lnt命令输出的Send-Q字段值也为“0”。详情可参考如下文档。

 

解决方案

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

升级ECS实例的内核到kernel-4.19.43-13.1.al7.x86_64及之后的版本。

 

适用于

  • 云服务器 ECS
    注:
    • 镜像:aliyun-2.1903-x64-20G-alibase-20190507.vhd及之前的版本。
    • 内核:kernel-4.19.43-13.al7.x86_64及之前的内核版本。

 

如果您的问题仍未解决,您可以在阿里云社区免费咨询,或提交工单联系阿里云技术支持。