クロス・リージョナル・ネットワーク・パフォーマンス・イシュー... ノート

クロス・リージョナル・ネットワーク・パフォーマンス・イシューの調査

Netflixは、Amazon AWS上の複数のリージョンで広範囲なクラウドインフラストラクチャーを運営し、内容のスムーズな配信を可能にしています。あるアプリケーションがリージョン間のデータ同期問題を経験した際、タイムアウトが原因でネットワークが疑われた。調査の結果、ネットワークエンジニアは、クライアントが生成するTCP RSTパケットを発見し、クライアントが接続を早期に終了させていることを示しました。パケットキャプチャーは、サーバーが継続的にデータを送信し、クライアントが30秒後に接続を終了させていることを確認しました。アプリケーションの調査で、サーバーから初期データを受信するための30秒のタイムアウトがあり、データがこの時間枠内に受信されなかった場合、接続を終了させていたことがわかりました。アプリケーションやサーバーに最近の変更がなかったにもかかわらず、この問題はLinuxカーネルが6.5.13から6.6.10にアップグレードされた時期と一致していました。メソディカルなカーネルバイセクションで、問題の原因となったコミットを特定し、新しいTCP受信ウィンドウサイズ計算メカニズムが導入されたことを発見しました。元の計算では50%のオーバーヘッドを仮定していたが、新しいメカニズムは実際のデータ特性に基づいてオーバーヘッドを動的に計算し、結果的に受信ウィンドウサイズが小さくなりました。この小さいウィンドウサイズでは、アプリケーションが30秒のタイムアウト内でデータを受信することができず、接続が終了する結果となった。根本的な原因は、古いsysctl_tcp_adv_win_scaleパラメーターの置き換えで、より正確なスケーリング比率が受信ウィンドウサイズの計算に使用されるようになったためです。カーネルアップグレードのロールバックで、アプリケーションの正常な運営が復元し、カーネル変更が問題の根本的な原因であることを示しました。