7

Windows Azure Caching Documentは言う

可能であれば、同じ DataCacheFactory オブジェクトを保存して再利用し、メモリを節約してパフォーマンスを最適化してください。」

これがどれほど高価であるかの指標や定量化を見た人はいますか?

ひとつの主張は、

「MaxConnectionsToServer 設定... は、キャッシュ クラスターに対して開かれる DataCacheFactory ごとのチャネル数を決定します。」

したがって、MaxConnectionsToServer = 1 であり、DataCacheFactory がアプリ内のシングルトンである場合、Web サーバーへのすべてのリクエストを効果的に同期したことになります。

ただし、DataCacheFactory をシングルトンにする (つまり、Application_OnStart に配置する) べきであるという指摘が多数あります。

これは非常に重要であり、Microsoft のドキュメントに記載されていないとは信じられません。DataCacheFactory は、AppFabric、Azure 共有キャッシュ、および Azure キャッシュで同じように扱われますか? Microsoft がシングルトン ファクトリ オブジェクトを必要とする方法でキャッシングを設計したとは信じがたいです。これは、SqlConnection を使用するすべての人に、アプリケーションにシングルトン SqlConnectionFactory オブジェクトを持たせるように要求するようなものです。

したがって、比較的平均的な Web アプリ (たとえば、1 時間あたり 1,000 件のリクエスト、キャッシュ内の約 100 個のオブジェクト、平均的なリクエストは 5 個のキャッシュ オブジェクトにアクセスする) を考えると、次のようになります。

  1. デフォルト (および推奨) では、一度にいくつの Factory オブジェクトが存在する必要がありますか?
  2. DataCacheFactory 参照を作成するのにどのくらい時間がかかりますか?
  3. DataCache 参照の作成にはどのくらいの時間がかかりますか?
  4. アプリごとに 1 つの DataCacheFactory オブジェクトのみ、要求ごとに 1 つの DataCache 参照のみにする必要がありますか?

編集(進行中の回答):

(1/2)。Azure 接続プールに Factory オブジェクトを処理させる

(3)。まだテスト中...

(4)。DataCache 参照を再利用する必要があるかどうかをまだ判断しようとしています

4

2 に答える 2

11

それはどうですか、Microsoftはベストプラクティスを文書化しました、そしてそれは接続プールを含みます!見つけるのは簡単ではありませんが(少なくとも私にとっては)。

答えは、新しいAzureキャッシングを実装するときにDataCacheFactoryオブジェクトを使用せず、DataCacheオブジェクトに直接アクセスすることです。

「DataCacheコンストラクターには、キャッシュクライアントの作成を簡単にする新しいオーバーロードもあります。以前は、ターゲットキャッシュを返すDataCacheFactoryオブジェクトを作成する必要がありました。現在、DataCacheを使用してキャッシュを作成できます。次の例では、構成ファイルのデフォルトセクションからデフォルトキャッシュへのクライアントを作成します。」

DataCache cache = new DataCache();

そして、接続プールを使用するには

「最新のWindowsAzureSDKでは、アプリケーションまたはWeb構成ファイルでキャッシュ設定を定義すると、接続プールがデフォルトで有効になります。このデフォルトの動作のため、接続プールのサイズを正しく設定することが重要です。接続プールサイズは、dataCacheClient要素のmaxConnectionsToServer属性で構成されます。」

マイクロソフトがmaxConnectionsToServerを正しく構成する方法についていくつかのガイダンスを提供したいと思いますが、それはテストを通じて決定できます。新しいAzureCachingを使用した自動接続プールは非常に優れています:)

于 2013-03-15T23:53:59.217 に答える
1

共有キャッシングサービス(以前はAzure AppFabric Cacheと呼ばれていました)を参照していると想定しています。個々の接続ごとにコストはかかりません。ただし、キャッシュアカウントを購入すると、キャッシュアカウントのサイズだけでなく、特定の接続数に対しても料金が発生します。

最小のキャッシュアカウントには1時間あたり10の接続があり、最も高価なキャッシュアカウントでは160の同時接続が可能です。したがって、アカウントのサイズによって接続が不足する可能性がある場合は、アプリから開く接続の数に注意するのが賢明かもしれません。

詳細 http://msdn.microsoft.com/en-us/library/windowsazure/hh697522.aspx

于 2013-03-14T00:44:34.077 に答える