ss -ti 单连接状态
单条连接出现吞吐低或延迟高的问题时,ss -ti 给出的信息最直接:cwnd 是拥塞窗口,代表当前允许在途的未确认数据量;rtt 与 rttvar 是平滑往返时间及其波动;retrans 是该连接累计的重传次数;发送队列有积压则说明数据已交给内核但还没发出去。这些量合在一起,能区分是网络受限还是应用写入过猛。
基本信息
| 查看命令 | ss -ti dst :443 |
|---|---|
| 按状态筛选 | ss -tin state established '( dport = :443 )' |
| 关键字段 | cwnd、rtt、rttvar、retrans、send、bytes_retrans |
| 口径提醒 | retrans 与 bytes_retrans 都是累计值,需要用差值 |
| 权限 | 普通用户即可查看本机连接状态 |
典型使用场景
- 单条连接的吞吐远低于预期,确认是否受拥塞窗口限制
- 延迟抖动排查:用 rttvar 判断往返时间的稳定程度
- 确认重传集中在少数连接,缩小抓包范围
- 评估发送队列积压,区分应用写入速度与网络发送能力
- 对比同一服务不同客户端连接的指标差异
读取方法
读取方法
ss -ti dst :443 # 查看与 443 端口通信的连接详情
ss -tin state established | head -20 # 所有已建立连接,含 TCP 内部信息
ss -tin state established '( sport = :8080 )' # 只看本机服务端口
# retrans 为累计值:间隔采样两次做差,才能对应到故障时段字段判读
| 字段 | 含义 | 判读 |
|---|---|---|
| cwnd | 拥塞窗口,可发送的在途数据量 | 长期偏小说明受网络条件限制 |
| rtt / rttvar | 平滑往返时间与波动 | rttvar 大表示链路不稳定 |
| retrans | 累计重传次数 | 需用差值对应故障时段 |
| send | 发送队列积压字节数 | 持续非零说明发送侧拥塞 |
| bytes_retrans | 累计重传字节数 | 结合总发送量看比例 |
判读链路
- 先看有无重传,判断是否存在丢包
- 再看 cwnd 与 send 的关系,区分受限于网络还是本端
- 然后看 rtt 与 rttvar,评估路径延迟是否稳定
- 必要时结合抓包与设备计数,把结论落到具体链路位置
rtt 是平滑后的估计值,不是某一次报文的瞬时延迟,用它来判断「此刻延迟多少毫秒」会偏保守,看趋势更可靠。
retrans 与 bytes_retrans 都是自连接建立以来的累计值,不看差值就无法判断故障发生的时间段,也无法衡量影响程度。