Share via


Verstehen und Verwalten von Verbindungen für Azure Managed Cache Service

Wichtig

Microsoft empfiehlt, alle neuen Entwicklungen azure Redis Cache zu verwenden. Für aktuelle Dokumentation und Anleitungen zur Auswahl eines Azure Cache-Angebots finden Sie unter Welches Azure Cache-Angebot ist für mich richtig?

Anwendungen, die Managed Cache Service verwenden, müssen verstehen, wie Verbindungen im Zielcache geöffnet werden.

Obwohl Managed Cache Service keine Kontingente für Verbindungen hat, sind Verbindungen eine wichtige Ressource, da sie eine teure Ressource zum Erstellen sein können. Das Freigeben von Verbindungen kann die Leistung verbessern.

Dieses Thema behandelt die folgenden Aspekte, die sich auf die Verbindungsverwaltung beziehen:

  • Verbindungspooling

  • Programmgesteuerte Konfiguration des Verbindungspoolings

  • Empfehlungen

Verbindungspooling

Die Art und Weise, wie Verbindungen verwaltet werden, hängt davon ab, ob Verbindungspooling aktiviert oder deaktiviert ist. In den folgenden Abschnitten werden die möglichen Szenarien und ihre Auswirkungen auf Verbindungskontoinformationen beschrieben.

Aktiviertes Verbindungspooling

Ab der Version vom November 2011 des Azure SDK verfügen alle appFabric-basierten Cacheangebote von Microsoft Azure Cache über die Möglichkeit, Verbindungen zu poolen. Wenn Verbindungspooling konfiguriert ist, wird der gleiche Pool aus Verbindungen für eine Clientanwendungsinstanz gemeinsam verwendet. Die Anzahl der freigegebenen Verbindungen wird durch die Einstellung " maxConnectionsToServer " bestimmt, die standardmäßig auf die Anzahl der Prozessorkerne auf dem Clientcomputer festgelegt ist. Im folgenden Beispiel wird das Ändern dieser Einstellung auf 2 mithilfe einer Anwendungskonfigurationsdatei gezeigt.

<dataCacheClient maxConnectionsToServer="2">

Jede AppDomian-Instanz teilt die von maxConnectionsToServer angegebenen Verbindungen unabhängig von der Anzahl der Von DataCacheFactory- oder DataCache-Objekten, die erstellt werden. Die Formel für die Gesamtzahl der Verbindungen beim Verwenden von Verbindungspooling ist der maxConnectionsToServer-Wert , der durch die Anzahl der ausgeführten Instanzen dieser Azure-Rolle multipliziert wird.

Das Beispiel oben geht davon aus, dass eine Konfiguration mit einem einzelnen Cacheclient verwendet wird. Betrachten Sie die folgende Konfigurationsdatei, die zwei benannte DataCacheClient-Abschnitte enthält.

<dataCacheClients>
    <dataCacheClient name="default" maxConnectionsToServer="2">
      <!-- Other settings omitted for space -->
      <autoDiscover isEnabled="true" identifier="mycache.cache.windows.net" />
    </dataCacheClient>
    <dataCacheClient name="localcache" maxConnectionsToServer="3">
      <!-- Other settings omitted for space -->
      <autoDiscover isEnabled="true" identifier="mycache.cache.windows.net" />
    </dataCacheClient>
  </dataCacheClients>

In diesem Beispiel könnte die Anwendung mehrere DataCacheFactory- oder DataCache-Instanzen erstellen, von denen einige die Konfiguration verwenden und einige die localcachedefault Konfiguration verwenden. Der Verbindungspool bezieht sich auf eine einzelne Konfiguration. Obwohl beide Konfigurationen auf denselben Cache verweisen, sind die Gesamtanzahl der Verbindungen, die zu diesem Cache möglich sind, die Summe ihrer maxConnectionsToServer-Werte.5

Hinweis

Bei Verwendung der Anwendungskonfigurationsdatei ist das Verbindungspooling standardmäßig im neuesten Azure SDK aktiviert. Wenn Sie die DataCacheFactoryConfiguration programmgesteuert konfigurieren, wird das Verbindungspooling möglicherweise nicht standardmäßig aktiviert, und einige Aktionen deaktivieren verbindungspooling. Weitere Informationen finden Sie im Abschnitt "Programmatic Configuration of Connection Pooling" in diesem Thema.

Deaktiviertes Verbindungspooling

Wenn das Verbindungspooling deaktiviert ist, verwendet jedes DataCacheFactory-Objekt eine Verbindung. Es ist wichtig, Ihre DataCacheFactory-Instanzen zu initialisieren und zu speichern, um die Anzahl der geöffneten Verbindungen sowie die beste Leistung zu steuern.

Wenn Sie kein Verbindungspooling verwenden, wird die Anzahl der Verbindungen, die zwischen dem Cache und einem Client eingerichtet werden, durch die folgende Formel definiert:

[DataCacheFactory instances] * [MaxConnectionsToServer setting] 

Standardmäßig ist maxConnectionsToServer die Anzahl der Prozessorkerne auf dem Clientcomputer. Sie können diese Einstellung erhöhen, um die Leistung zu verbessern, wenn Sie ein DataCacheFactory-Objekt über Threads freigeben. Wenn beispielsweise maxConnectionsToServer ist 2, verwendet jedes DataCacheFactory-Objekt zwei Verbindungen.

In diesem Szenario verwenden mehrere aktive DataCacheFactory-Objekte jeweils die Anzahl der Verbindungen, die von maxConnectionsToServer angegeben werden. Wenn dieser Wert beispielsweise zwei DataCacheFactory-Instanzen enthält2, werden insgesamt vier Verbindungen verwendet.

In der Vergangenheit war dies das Standardverhalten. Im aktuellen SDK ist Anwendungspooling standardmäßig aktiviert, wenn eine Anwendungskonfigurationsdatei verwendet wird. Um das Verbindungspooling in der Konfigurationsdatei zu deaktivieren, legen Sie das ConnectionPool-Attribut auf false. Die folgende Konfigurationsdatei zeigt diese Einstellung.

<dataCacheClient connectionPool="false">

Verbindungspooling ist nicht die Standardeinstellung, wenn Sie Ihren Cacheclient programmgesteuert konfigurieren. Weitere Informationen zur programmgesteuerten Konfiguration und Verbindungspooling finden Sie im nächsten Abschnitt, programmgesteuerte Konfiguration von Verbindungspooling.

Programmgesteuerte Konfiguration des Verbindungspoolings

Wenn Sie einen Cacheclient programmgesteuert konfigurieren, ohne Managed Cache Service Konfigurationsdateieinstellungen zu verwenden, ist das Verbindungspooling standardmäßig nicht aktiviert. In diesem Fall müssen besondere Schritte ausgeführt werden, um Verbindungspooling über Code zu aktivieren.

  1. Erstellen Sie ein DataCacheFactoryConfiguration-Objekt . Konfigurieren Sie die Standardeinstellungen wie Server und SecurityProperties.

  2. Rufen Sie die statische Methode dataCacheFactoryConfiguration auf. CreateNamedConfiguration, übergeben einen neuen Konfigurationsnamen, das zuvor erstellte DataCacheFactoryConfiguration-Objekt und ein Boolean-Flag, das angibt, ob das Verbindungspooling aktiviert() oder deaktiviert(truefalse) ist.

  3. Erstellen Sie ein neues DataCacheFactoryConfiguration-Objekt , indem Sie den Konstruktor übergeben, der den neuen Namen der Konfiguration über aktiviertes Verbindungspooling übergeben. Dies ist der im vorherigen Schritt angegebene Name.

  4. Erstellen Sie dann ein DataCacheFactory-Objekt , das diese Konfiguration verwendet.

DataCacheFactoryConfiguration Config = new DataCacheFactoryConfiguration();

// Configure the DataCacheFactoryConfiguration with appropriate settings for your cache here:
// ...

// Set the MaxConnectionsToServer to control the size of the connection pool
Config.MaxConnectionsToServer = 3;

// Create a named configuration from this configuration and enable connection pooling
DataCacheFactoryConfiguration.CreateNamedConfiguration("MyConfigWithConnectionPooling", Config, true);

// Create a DataCacheFactoryConfiguration using the new named configuration that enabled connection pooling
DataCacheFactoryConfiguration ConfigWithPooling = new DataCacheFactoryConfiguration("MyConfigWithConnectionPooling");

// Use this new named configuration in the call to DataCacheFactory
DataCacheFactory factory = new DataCacheFactory(ConfigWithPooling);

Beachten Sie, dass beim Erstellen eines DataCacheFactoryConfiguration-Objekts auch die Konfiguration aus den Einstellungen in einer Anwendungskonfigurationsdatei initialisiert werden kann. Dies ist eine Kombination aus verschiedenen Ansätzen, die beide die Konfigurationsdatei und Code zum Konfigurieren des Cacheclients verwenden. Wenn der Konstruktor leer ist, wird der Konfigurationsabschnitt default gelesen. Wenn eine Zeichenfolge an den Konstruktor übergeben wird, wird dieser benannte DataCacheClient-Abschnitt angewendet. In diesem Szenario können Sie die Konnectionpooling aus der Konfigurationsdatei aktivieren, anstatt den CreateNamedConfiguration-Aufruf aufzurufen, um dies auszuführen.

Warnung

Wenn Sie die DataCacheFactoryConfiguration aus einer Anwendungskonfigurationsdatei initialisieren, können Änderungen an dieser Konfiguration dazu führen, dass verbindungspooling deaktiviert wird. Diese Einstellungen betreffen die Eigenschaften server, security, compression, maxConnectionsToServer und transport. In diesem Fall müssen Sie die CreateNamedConfiguration-Methode verwenden, wie zuvor beschrieben, um eine neue Konfiguration basierend auf Ihrer geänderten Konfiguration mit aktiviertem Verbindungspooling zu erstellen.

Empfehlungen

Mit Managed Cache Service gibt es keine Kontingenteinschränkungen für Verbindungen, die andere als die zugrunde liegenden physischen Ressourcen der Clients und Server sind. Es wird dennoch empfohlen, Verbindungspooling zu verwenden, damit Verbindungen auf einfachere Weise erneut verwendet und verwaltet werden können, um die Leistung zu verbessern.

Wenn das Verbindungspooling aktiviert ist, sollten Sie analysieren, ob der Standardwert 1maxConnectionsToServer für Ihre Anwendung geeignet ist. Wenn Sie DataCacheFactory-Objekte in mehreren Threads verwenden, ist es möglich, dass Sie eine bessere Leistung erzielen können, indem Sie die Anzahl der Verbindungen im Pool auf mehrere erhöhen. Natürlich sollten Sie dann berechnen, wie sich dies auf die Anforderungen an die Gesamtzahl der Verbindungen basierend auf der Anzahl der Rolleninstanzen auswirkt, die diesen Code ausführen.

Wie bereits erläutert wurde, erhält jede separate benannte Konfiguration einen eigenen Verbindungspool. Dieser Umstand muss beim Berechnen der Gesamtzahl von Verbindungen mit dem Cache berücksichtigt werden.

Es ist wichtig, den Unterschied im Verbindungspooling-Standardverhalten beim Verwenden der Einstellungen der Anwendungskonfigurationsdatei im Vergleich zur programmgesteuerten Konfiguration für Ihren Cacheclient zu verstehen. Diese Unterschiede werden in den vorherigen Abschnitten dieses Themas beschrieben. Aufgrund der Komplexität, die für die programmgesteuerte Konfiguration gilt, ist es einfacher, Verbindungspooling durch Konfigurieren des Caches über die Konfigurationsdateien (app.config oder web.config) einzurichten.

Bei früheren SDK-Versionen oder beim manuellen Deaktivieren der Verbindungspooling sollten Sie eine minimale Menge von DataCacheFactory-Objekten in Ihrem Code erstellen, speichern und erneut verwenden. Auf diese Weise wird die Leistung verbessert, weil keine neuen Verbindungen für jeden Cachevorgang hergestellt werden müssen. Außerdem kann die Anzahl der Verbindungen besser verwaltet werden. Wenn Sie die gleichen DataCacheFactory-Objekte über Threads freigeben, können Sie eine Leistungssteigerung sehen, indem Sie den maxConnectionsToServer-Wert erhöhen. Wenn die Verbindungspooling deaktiviert ist, sollten Sie die Anzahl der aktiven DataCacheFactory-Objekte , die Einstellung "maxConnectionsToServer " und die Anzahl der Rolleninstanzen sorgfältig überwachen. Alle diese Faktoren tragen dazu bei, die Anzahl aktiver Verbindungen zu ermitteln, die verwendet werden.