一度に 1 つの要求がある限り、同じ場所にあるキャッシュを使用すると、すべて正常に動作します。しかし、複数の同時リクエストでサービスをヒットすると、キャッシュが機能しないようです。
予備分析により、これにたどり着きました- https://azure.microsoft.com/en-us/documentation/articles/cache-dotnet-how-to-use-service/
どうやら、maxConnectionsToServer
複数の同時接続をキャッシュできるようにするために使用する必要があるようです。useLegacyProtocol
ただし、このドキュメントでは、接続プールを有効にするために false に設定する必要があるパラメーターについても説明しています。
次の質問があります。
私のサービスは、数百の同時リクエストを取得します。これは、このようなシナリオに適した設定でしょうか:
<dataCacheClient name="default" maxConnectionsToServer="100" useLegacyProtocol="false">
これは、この構成で得られる動作についての私の理解です。リクエストが来るたびに、プールから接続を取得しようとします。利用可能な接続がない場合、現在の接続数が 100 未満であれば新しい接続が作成されます。それ以外の場合、リクエストは失敗します。これが正しいかどうか確認してください。
上記のドキュメントでは、DataCacheFactory のインスタンスごとに 1 つの接続が使用されると記載されています。キャッシュとのすべてのやり取りを管理するキャッシュ マネージャー クラスがあります。これはシングルトン クラスです。DataCacheFactory オブジェクトを作成し、それを使用してインスタンス化中にキャッシュへのハンドルを取得します。私のサービスには 2 つのインスタンスがあります。サーバーへの接続は2つしか必要ないようです。これは正しいです?接続プーリングも必要ですか?
maxConnectionsToServer が受け入れることができる最大値と、特定のシナリオで理想的な値は?
「ConnectionPool」という名前のブール値パラメーターも表示されます。これは、「useLegacyProtocol」を補完するように見えます。これは冗長ではありませんか?useLegacyProtocol="false" の設定は connectionPool="true" とどのように異なりますか? このパラメーターを使用するかどうか、および使用する方法について混乱しています。
maxConnectionsToServer
とConnectionPool
パラメータは何らかの形で関連していますか? maxConnectionsToServer を 5 に設定し、ConnectionPool=true とはどういう意味ですか?