2

クライアントの 1 つは、Netscaler を Fuse サーバーと Tomcat がホストするソフトウェアの間のバランサー ミドルウェアとして使用しています。現在、ソフトウェアとネットスケーラーの間で奇妙な通信動作が発生しています (Spring-WS を使用して SOAP リクエストを作成しています)。しばらくすると、ネットスケーラーへのリクエストが行われ、応答が待機されているため、ネットスケーラーは ACK、RST パケットを送信します。その結果、Java は「接続リセット」IOException をスローします。tcp ダンプは次のとおりです。 ファイアシャークのスクリーンショット

ネットスケーラーのドキュメントによると、リセット パケットのフィールドには、この状況にある「アイドル状態の接続のクリーンアップ」を意味するWinエラー コードが含まれています。これは、ネットスケーラーがアイドル状態の接続をクリーンアップする「ゾンビ」プロセスを実行し、このプロセスが認識したことを意味します。9300私たちの接続はアイドル状態です。

idleこの場合、接続がネットスケーラーによるものとして扱われるのはなぜですか?

更新 より完全な通信ログは次のとおりです。 ここに画像の説明を入力

4

2 に答える 2

0

わかりました、これは私が読んで言われたことです:

  1. TCP レベルでは、接続がハングするプロトコルの問題はありません (つまり、長時間何も送信されず、接続終了シーケンスがありません)。
  2. それにもかかわらず、問題はより高いレベルで発生します (システムリソースは各接続に割り当てられます)。これに対処するために、ハングした接続に対する非公式の (エラーが発生しやすいため) 回避策があります: 接続を正常に終了するには、接続の両側keepaliveいくつかのパケットが送信され、反対側からの応答が受信されない場合、パケット (プローブ) を送信し、アクションを実行する可能性があります。
  3. Netscaler は、ハングした接続の問題に 2 つの方法で対応します。特定の (構成可能な) 時間の経過後にハングした接続を閉じるか、keepalive-probe アプローチを使用できます (そのアプローチにも構成可能なパラメーターがあります)。

私たちのクライアントは、サービスの実装 (長いリクエスト処理) に埋もれているより深い問題を発見しましたが、接続のリセットを停止するためにキープアライブ プローブ アプローチを適用することもできました。

リンク:

http://www.tcpipguide.com/free/t_TCPConnectionManagementandProblemHandlingtheConnec-3.htm

https://www.citrix.com/blogs/2012/07/26/netscaler-10-keep-alive-value-add-to-the-tcp-stack-with-profiles/

于 2015-12-03T06:12:48.847 に答える