質問

別の Windows サービス (RemotingService と呼びましょう) で実行されているリモート シングルトン サーバーがあります。RemotingService のクライアントは ASP.NET インスタンス (多数) です。

現在、リモート処理を行うクライアントは RemotingService を呼び出し、RemotingService 呼び出しが処理されている間ブロックします。ただし、リモート サービスは (RPC 呼び出しの増加と複雑なアルゴリズムにより) 非常に複雑になっているため、asp.net ワーカー スレッドが非常に長い時間 (4 ~ 5 秒) ブロックされます。

によると このmsdnの記事, 、これを行うと、asp.net ワーカー スレッドがリモート RPC ごとにブロックされるため、適切に拡張できません。asp.net ワーカー スレッドを解放するために、非同期ハンドラーに切り替えることをお勧めします。

非同期ハンドラーの目的は、ハンドラーが元のリクエストを処理している間に追加のリクエストを提供するためにASP.NETスレッドプールスレッドを解放することです。

これは問題ないようですが、リモート呼び出しが依然としてスレッド プールからスレッドを消費する点が異なります。これはasp.netワーカースレッドと同じスレッドプールですか?

asp.net ワーカー スレッドを解放するには、リモート シングルトン サーバーを非同期システムに変えるにはどうすればよいですか?

いくつかの重要な情報を見逃している可能性があります。質問に答えるために他に知っておく必要があることがあれば、お知らせください。

役に立ちましたか?

解決

ThreadPool の使用の背後にある考え方は、それによって同期スレッドの量を制御でき、同期スレッドが多すぎる場合には、スレッド プールが新しいスレッドの待機を自動的に管理するというものです。

Asp.Net で動作するスレッド (私の知る限り) はスレッド プールから取得されたものではないため、リモート サービスへの呼び出しの影響を受けることはありません (これが非常に遅いプロセッサであり、リモート関数が非常に CPU を集中的に使用する場合を除きます)。この場合、コンピュータ上のすべてが影響を受けます)。

いつでも別の物理サーバー上でリモート サービスをホストできます。その場合、asp.net ワーカー スレッドは、リモート呼び出しから完全に独立します (リモート呼び出しが別のスレッドで呼び出される場合)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top