对 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
该命令的输出
例子:
在大多数情况下,节点发送的 TCP 零窗口更新数据包表明节点上的接收应用程序(进程)(NFS、SMB 等)从接收缓冲区中提取数据的速度很慢。这可以通过输出中连接的 Recv-Q 列中显示的一致非零值来表示
例子:
总之,如果在为连接发送 TCP 零窗口更新数据包时连接的 Recv-Q 值仍然升高,则应在接收应用程序、CPU、磁盘等处对瓶颈进行调查。
如果连接的 Recv-Q 值保持为零,则节点发送的 TCP 零窗口更新数据包也可能表明连接节点侧的 TCP 接收窗口太低,无法开始用于节点和远程目的地之间连接的带宽延迟积 (BDP),并且可能需要考虑某些节点 TCP 调整。
'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
https://www.delltechnologies.com/asset/en-us/products/storage/industry-market/h16463-isilon-advanced-networking-fundamentals.pdf
Affected Products
PowerScale OneFSArticle 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.