5

いくつかのクイック ルックアップ データを格納するために Azure Redis Cache を使用しています。このキャッシュは 10 個のクライアント アプリケーションによって読み取られ、接続されています。すべてのアプリケーションは .NET 4.6 で記述されており、これには ASP.NET MVC Web アプリケーション、Web API、および 1 秒ごとに実行されるいくつかのワーカー ロールが含まれます。すべてのクライアントは、キャッシュへの接続に StackExchange.Redis を使用しています。ただし、断続的なタイムアウトが発生し、Azure Portal で最大接続数が 1000 に達していることを確認しました (価格レベルの場合)。クライアント アプリケーションは 10 個しかなく、いずれもマルチスレッド化されていないため、何がキャッシュへの 1000 接続を作成できるのでしょうか?

キャッシュ クライアントで従うことができるベスト プラクティスはありますか?

4

1 に答える 1

8

これは、Azure Redis Cache への接続が非常に多いのはなぜですか?という質問とよく似ています。

ほとんどのお客様に推奨するベスト プラクティスは次のとおりです。

  1. 接続文字列で abortConnect を false に設定します
  2. シングルトン connectionMultiplexer を作成して再利用します。これは、ほとんどのシナリオで十分です。一部の高度なシナリオでは、アプリケーションごとに複数の connectionMultiplexer オブジェクトを作成する必要がある場合がありますが、ほとんどの場合は 1 つだけで問題ありません。ここに示すコーディング パターンに従うことをお勧めします: https://azure.microsoft.com/en-us/documentation/articles/cache-dotnet-how-to-use-azure-redis-cache/#connect-to-the -キャッシュ
  3. ConnectionMultiplexer に再接続を処理させます。コードを十分にテストしない限り、自分で再接続しないでください。私が見たほとんどの接続リークは、人々が connectionMultiplexer を再作成しているが、古いものを破棄できないためです。ほとんどの場合、マルチプレクサに再接続を任せるのが最善です。
于 2016-07-20T16:29:54.853 に答える