Windowsのターゲットクライアントマシンでファイル操作を実行し、シェルコマンドを実行するための配布システムがあります。私はカスタムTCPエンドポイントを使用して、サーバー上のWindowsサービスに接続します。接続が多すぎると、送信クライアントのTCPポートがブロックされる
私はこのツールを作成して、あるマシンにそのエージェント(クライアント)の多数のインスタンスを作成し、それらのすべてに対してサーバーから特定のジョブセットを実行しました。問題は、クライアントマシン上のすべての発信TCPポートが数百を超えるエージェントを起動した後にブロックされることです。各エージェントは動的ポートを使用しており、単一のサーバーポートをリッスンしています。
2000-3999のポートで2000エージェントが稼働していて、すべてがサーバーのポート5111をリスンしているとします。
TCP/IPを選択 ローカルエンドポイントは、最近、同じリモート エンドポイントに接続するために使用されたため、発信接続の確立に失敗しました:私は、Windowsイベントログに受信してい エラーメッセージは次のようになります。このエラーは、通常、発信接続が が高速で開閉する場合に発生し、利用可能なローカルポートをすべて にし、TCP/IPで発信用のローカルポートを再使用するように強制します。 データ破損のリスクを最小限に抑えるために、TCP/IP 標準では、指定されたローカルエンドポイントから特定のリモートエンドポイントへの連続した接続の間に最小限の時間が必要です。
これが発生すると、このマシンはTCPポートをもう使用できなくなります。レジストリのTCPデフォルト動作の一部を変更しようとしましたが、役に立たなかったのです。接続を開く間隔は1〜5秒です。
最適な遅延を管理するための回避策は、テストに必要な積極的なネットワークアクティビティに関係なく、アプリケーションを信頼できるものにしますか?
あなたのエージェントソケットにReuseAddressを設定しようとしましたか? –
実際には、PIDとポート番号が異なる2000の別個のエージェントです。サーバ上のリスニングポートだけがエージェント間で似ています。最後に、私は接続を確立する間により高い遅延を試み、すべてを登録することができました –