对 PowerScale 节点发送的 TCP 零窗口更新数据包进行故障处理

Summary: 本文讨论 netstat 命令中窗口计数器为零的原因。它还讨论了在研究和调查这些值增加的原因时可能的兴趣点。

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Instructions

该命令的输出
 'netstat -anT -p tcp'
来自节点的命令显示 TCP 零窗口数据包计数(0-win 列)。0-win 列中的值指示到远程设备(外部地址)的 TCP 连接(本地地址)的节点发送 TCP 零窗口更新数据包的次数。当节点的 TCP 接收窗口已减小到零或大小太小而无法容纳全尺寸数据段时,会发生这种情况。
例子:
Cluster-1# netstat -anT -p tcp
Active Internet connections (including servers)
Proto Rexmit OOORcv 0-win  maxswnd maxseg     srtt   srtvar    rexmt  sndwnd sncwnd rcvwnd   delack SR SS ND AS Local Address          Foreign Address
tcp4       0      0   1001 2097920   1460     47ms     23ms    342ms 2097664 190488 131400     99ms  X  X  X  X 100.89.53.100.445       100.90.164.11.52765
...
这样做的最终结果是远程设备将无法传输数据,从而引入导致(写入)延迟增加的延迟,直到节点发送 TCP 窗口更新,指示它现在可以接收的数据量。
在大多数情况下,节点发送的 TCP 零窗口更新数据包表明节点上的接收应用程序(进程)(NFS、SMB 等)从接收缓冲区中提取数据的速度很慢。这可以通过输出中连接的 Recv-Q 列中显示的一致非零值来表示
 'netstat -an tcp'
相同名称。例如,多次运行以下命令以查看 Recv-Q 是否始终已满。
例子:
Cluster-1# netstat -an tcp
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address          Foreign Address        (state)
tcp4  131400      0 100.89.53.100.445       100.90.164.11.52765    ESTABLISHED
...
这是一个实时计数器,因此当节点为连接发送 TCP 零窗口更新数据包时,需要运行此命令。以下是用于从中检索实时统计信息的示例脚本:
  • 接收
  • Send-Q的
  • 订单外 (OOO)
  • 零 Windows (0-win)
  • 重新传输
# mkdir /ifs/data/Isilon_Support/$(date +%d-%m-%Y)/
echo; while sleep 10 ; do echo "######### Live Send Rec Queue Q: #########"; date ; netstat -an4x -p tcp | awk '{ if (( $2 != 0 ) || ($3 != 0)) print $0 }'; echo; sleep 1; echo "######### Live OoO / 0-win / Retrans: #########" ; date; netstat -an4T -p tcp | awk '{ if (( $2 != 0 ) || ($3 != 0) || ($4 != 0)) print $0 }'; done >> `hostname`.TCP_specs.out
持续升高的 Recv-Q 意味着数据已放在接收缓冲区中,但应用程序尚未调用 recv() 将其从接收缓冲区复制到应用程序缓冲区。这表明应用程序过载或无法及时处理传入数据。一旦数据到达接收队列中,就应该立即处理它,如果应用程序没有这样做,那么它就会被要求做超出其处理能力的工作。
总之,如果在为连接发送 TCP 零窗口更新数据包时连接的 Recv-Q 值仍然升高,则应在接收应用程序、CPU、磁盘等处对瓶颈进行调查。
如果连接的 Recv-Q 值保持为零,则节点发送的 TCP 零窗口更新数据包也可能表明连接节点侧的 TCP 接收窗口太低,无法开始用于节点和远程目的地之间连接的带宽延迟积 (BDP),并且可能需要考虑某些节点 TCP 调整。

Additional Information

有关详细信息,请参阅以下指南的 “延迟、带宽和吞吐量” 部分:

https://www.delltechnologies.com/asset/en-us/products/storage/industry-market/h16463-isilon-advanced-networking-fundamentals.pdf

Affected Products

PowerScale OneFS
Article Properties
Article Number: 000221738
Article Type: How To
Last Modified: 19 Apr 2024
Version:  2
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.