1

現在、Windowsで実行されている自作サーバーアプリケーションで問題が発生しています(異なるバージョンで発生します)。サーバーはTCPポートでリッスンし、接続を受け入れ、一部のデータを交換してから、接続を再度閉じます。時々接続する約100のクライアントがあります。

サーバーが動作を停止することがあります。ログファイルには、接続が引き続き受け入れられていることが示されていますが、最初の読み取り試行でソケットエラー(10054-ピアによる接続のリセット)が発生します。すべてのクライアントで突然機能しなくなるため、クライアントの問題ではないと思います。

同じ問題が、別のプログラミング言語で書かれた古いサーバーソフトウェアでも発生することがわかりました。それで、それは私たちのプログラムのエラーではないようです-それはある種のOS /ファイアウォールの問題であるに違いないと思いますか?もちろん、ファイアウォールは非アクティブ化されていますが、まだ問題は解決していません。

どこを調べるべきか?Wiresharkのログはすぐに続きます。

ログからの抜粋(タイムスタンプ、スレッドID、メッセージ)

11:37:56.137 T#3960 Connection from 10.21.13.3
11:37:56.138 T#3960 Client Exception: Socket Error # 10054
Connection reset by peer.
11:37:56.138 T#3960 ClientDisconnected
11:38:00.294 T#4144 Connection from 10.21.13.3

接続が受け入れられるのとほぼ同時に例外が発生することがわかります。この場合、クライアントは数秒後に再接続します。

4

6 に答える 6

5

「ステートフル」ファイアウォールまたはNATは接続を追跡し、知らない接続用のRSTを送信する必要があります。ファイアウォールが何らかの理由で接続を追跡できなくなった場合は、ランダムな接続がリセットされている可能性があります。

稼働中のルーターはこれを実行します。PPP接続が切断されると接続を忘れます。これは、雨が降ってDSLの再起動に少し時間がかかる場合は非常に役に立ちません。ただし、接続をリセットする代わりに、パケットをドロップするだけです(さらに役に立たない!)。

于 2011-06-18T15:46:11.360 に答える
1

ファイアウォールまたはルーティングの問題のように聞こえます-タイムアウト期間が経過すると、古い接続が切断される可能性があります。プロトコル内でping/キープアライブを使用していますか。
それ以外の場合は、Wiresharkに何が起こっているかを確認するように依頼できます。

于 2011-05-12T13:02:20.827 に答える
1

まず、多くのヒントに感謝します。問題はまったく別の問題であり、私の質問を読んでも解決できない可能性があります。

サーバーアプリケーションは、ログファイルImmediateFlush=trueで構成されたlog4netを使用します。すべてのログステートメントがファイルに直接書き込まれ、複数のソケット接続が発生すると、アプリケーション全体の速度が低下します。サーバーが実際に接続を受け入れるには、約1分かかりました。これは、クライアント側のタイムアウトをはるかに超えていました。そのため、ログには「承認済み」の後に「切断済み」と表示されただけで、ログも遅延していました。

ご不便おかけしてすみません...

于 2011-06-24T08:43:12.357 に答える
0

バックログを変更して、この問題が発生するまでにサービスが提供される時間またはクライアントの数を確認しましたか?

于 2011-06-17T12:22:52.890 に答える
0

サーバーに使用しているWindowsのバージョンはわかりませんが、サーバーとクライアントのOSではWindows TCP/IPスタックの動作が異なることに注意してください。クライアントOSが許可する同時着信接続の数には制限があり、予想よりも大幅に低くなっています。

于 2011-06-19T15:43:28.577 に答える
0

クライアント側から見たログはどのように見えますか?

エラーは、クライアントが接続を切断していることを示しているため、クライアント側で同じエラーが表示される場合は、接続をドロップしているのはファイアウォールまたはプロキシです(反対側が接続をドロップしているのは、プロキシ/ファイアウォールを示しています)。

エラーがクライアント側に存在しない場合。次に、実際のエラーが表示されるのはクライアント側です。

于 2011-06-20T03:13:40.537 に答える