1

単一の Web サーバー (IIS 8/Windows Server 2012) 上の複数の Web アプリケーションにまたがる単一のキャッシュへのアクセスに関するシナリオに苦労しています。

現在、メモリが 16 GB のサーバーがあり、1 つのサイトのみを実行しています。議論のために、このサイトはそれ自体で 10 GB のメモリを消費するとしましょう (私はよく知っています)。

System.Web.HttpRuntime.Cache検索が非常に高速な にすべてを保存します。典型的なシナリオでは、このキャッシュから 10,000 個のオブジェクトを取得しますが、これは数ミリ秒で実行できます。

サーバー上で実行されている他のサイトと 99.9% 同一の別の Web アプリケーションをこのサーバーに追加し、理想的には高速な HttpRuntime.Cache を使用してこのサイトのすべてにアクセスしたい場合は、注意が必要です。

私が見ている問題は、私が認識している限り、この HttpRuntime.Cache をアプリケーション間で共有できないことです。

AppFabric、Redis、NCache、すべての分散キャッシュ エージェントを試してみましたが、同じ 10,000 個のオブジェクトを取得できる絶対最速は約 2 秒で、オンデマンド Web サイトには適していません。(余談ですが、これらの 2 秒のうち 1.999 秒は、非常に CPU を集中的に使用するデシリアライズで満たされていると確信しています)

明らかな何かが欠けています...1つのサーバー上の2つのWebアプリが、コストのかかるシリアライゼーション/デシリアライゼーションを必要としないキャッシュにアクセスする方法はありますか? それとも、新しい Web サーバーに分岐する時でしょうか。

4

2 に答える 2

0

これについては確信が持てないので、推測してみます:)

redis を使用して複数のキーを取得する場合は、単一のトランザクション (MULTI/EXEC) 内で行うか、少なくともキーごとに 1 回の呼び出しを行うと非常に遅く非効率になるため (Web サーバーは IO に多くの時間を費やすことになります) redis へ)。

于 2013-04-16T21:51:00.017 に答える
0

私はあなたの状況を理解しています。実際、多くの人が同じように直面しています。私はあなたを励まします

全体のサブセットをキャッシュできる NCache のクライアント キャッシュ機能を使用するには

.NET アプリケーションのプロセス メモリ内の分散キャッシュ。

クライアント キャッシュを使用すると、パフォーマンスの目標を達成できます。また、バックグラウンドでキャッシュが分散されているため、非常に大きなキャッシュを構築することもできます。これは、スタンドアロンの HTTP キャッシュでは実行できないことです。

これについてNCacheチームの誰かと 1 対 1 で話したい場合はお知らせください。

于 2013-05-20T11:41:38.553 に答える