1

概要:

「WebsiteAppPool」という名前の AppPool を使用して、「Website」という名前の IIS に ASP.NET MVC Web サイトがあります。WebsiteAppPool は、最大 4 つのワーカー プロセスを許可するように構成され、実質的に「Web ガーデン」を作成します。Web サイトは、web.config を介して構成され、CacheProfiles を使用して OutputCaching を有効にします。

<caching>
  <outputCacheSettings>
    <outputCacheProfiles>
      <clear />
      <add name="ControllerNameActionName" duration="43200" varyByParam="*" />
    </outputCacheProfiles>
  </outputCacheSettings>
</caching>

私の質問は -

AppPool のワーカー プロセスは出力キャッシュを共有しますか、それとも各ワーカー プロセスが出力キャッシュを持っているので、AppPool 全体で 4 つのキャッシュされたコピーが作成されます。

ノート:

私の主な懸念は、これがキャッシュされた出力を持つことの利点を明らかにすることであり、キャッシュされた出力を提供する WorkerProcess を 4 つではなく 1 つ持つ方がよいでしょう。

4

2 に答える 2

2

MSDNから:

Web ガーデンでは複数のプロセスを使用できるため、各プロセスには、アプリケーション状態、インプロセス セッション状態、キャッシュ、および静的データの独自のコピーがあります。特に状態を維持する必要がある場合は、すべてのアプリケーションに Web ガーデンを使用しないでください。Web ガーデン モードが適切かどうかを判断する前に、必ずアプリケーションのパフォーマンスのベンチマークを行ってください。

Web ガーデンを使用する場合、セッション状態とラウンド ロビンがどのように機能するかを理解することが重要です。他のアプリケーション プール設定がアプリケーションに与える影響を考慮することも重要です。

インプロセスのセッション状態を実行している場合、Web ガーデンは特にやっかいです (そうでないことを願っています)。私の経験では、Web ガーデンは、人々が考えているようなメリットをもたらすことはめったにありません。

于 2009-12-12T18:47:22.197 に答える
0

ワーカー プロセス間に関係はありません。それぞれに独自のキャッシュがあります (インプロセス キャッシュであるため)。とはいえ、アプリケーションが Web ガーデン シナリオをサポートする (つまり、処理中の状態に依存しない) ようにすると、アプリケーションはより堅牢になり、スケールアップが容易になります。将来別のサーバーを追加して Web ファームを作成する方が簡単です。

それを YAGNI と呼ぶかもしれませんが、スケールアップをサポートする方法でほとんどの Web アプリケーションを作成するのが常識だと思います。あなたの場合、4 つの異なるキャッシュを使用しても問題ないと思います。Web ガーデンを使用すると、実際にサイトのパフォーマンスを向上させることができます。

于 2009-12-12T19:11:05.273 に答える