4

現在、いくつかの計算を実行し(そして動的に生成されたドキュメントを返す)、約1時間かかるASMX、ASP 2.0、IIS7Webサービスを開発しています。実行するのに60秒。

複数のコアと大量のRAMを備えた大きなマシンがあるため、IISは、要求キューに到着した要求を、アプリプールのスレッドプールの使用可能なすべてのスレッドにルーティングするために最善を尽くすことを期待していました。

しかし、私たちは反対のことを静かに経験します:

複数の異なるクライアントからASMXWebサービスURLに要求を発行すると、IISはこれらの要求を連続して処理しているように見えます。つまり、リクエスト1が到着し、処理され、次にリクエスト2が処理され、次にリクエスト3というようになります。

質問:

十分なスレッドが利用可能な場合、(WebサービスのC#コードを変更せずに)要求を並行して処理するようにIISを構成することは可能ですか?

  • はいの場合:どうすればよいですか?
  • いいえ:回避策/ヒントはありますか?
4

2 に答える 2

4

ワーカー プールがWeb ガーデンになるようにするには、アプリケーション プールの「最大ワーカー プロセス」が 1 より大きいことを確認してください。デフォルトでは、各アプリケーション プールは 1 つのプロセスのみを使用するように設定されているため、要求がキューに入れられます。

IIS7 の統合モードでの ASP.NET 2.0 の使用に関するこの記事も参照してください。

  1. ASP.NET スレッド設定は、統合モードで要求の同時実行を制御するために使用されません。

system.web/httpRuntime 構成セクションの minFreeThreads、minLocalRequestFreeThreads 設定、および processModel 構成セクションの maxWorkerThreads 設定は、ASP.NET で使用されるスレッド メカニズムを制御しなくなりました。代わりに、ASP.NET は IIS スレッド プールに依存し、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\2.0.50727.0 にある MaxConcurrentRequestsPerCPU DWORD 値 (既定値は 12) を設定することで、同時実行要求の最大数を制御できます。鍵。この設定はグローバルであり、個々のアプリケーション プールまたはアプリケーションに対して変更することはできません。回避策

A. アプリケーションの同時実行を制御するには、MaxConcurrentRequestsPerCPU 設定を設定します。

于 2010-04-20T04:17:07.900 に答える
3

Web サービスでセッション状態を使用していますか? セッション状態を使用するページへのリクエストはシリアル化されます。多分それはあなたのサービスと同じです。

ASP.NET と IIS は通常、要求を並行して処理します。そうでない場合は、何かがそれを妨げています。

于 2010-04-20T06:29:33.063 に答える