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ゼロ ウィンドウ アップデート パケットが送信されている間に実行する必要があります。以下は、ライブ統計を取得するためのサンプルスクリプトです。
  • Recv
  • Send-Q
  • 注文外(OOO)
  • ゼロ ウィンドウ (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 値が 0 のままの場合、ノードによって送信される 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.