少し背景:
RPCを使用してネットワーク経由で通信するWindowsプログラムに取り組んでいます。ネットワーク接続は継続的に確立および切断されます。RPC呼び出しは同期的ですが、同時に動作している複数のクライアントスレッドがあります。プログラムは対称的です。つまり、両側がクライアントとサーバーとして機能し、まったく同じソフトウェアを実行しています。これは、標準のWindowsAPIを使用してC++で実装されます。
問題:
Process Explorerによって報告されるスレッドハンドルの数は、時間の経過とともに増加します。スレッドはRPCランタイムによって要求を処理するために作成されているように見えますが、スレッドが再利用されたときにハンドルが常にクリーンアップされるとは限りません。
特に、送信するデータが多い場合や、同時に多くの通話が発生している場合に増加します(これら2つの要素は密接に関連しており、どちらが適切かはわかりません)。
アクティブなサーバーは、数日間で数千の未使用のスレッドハンドルを構築できますが、常に20を超えるスレッドを使用することはありません。
質問:
顧客のサイトで安定性の問題を引き起こしている可能性があるため、ハンドル数が増えないようにするにはどうすればよいですか?