Best Practices

Auf dieser Seite werden Best Practices für die Verwendung von Memorystore for Memcached erläutert.

Best Practices für Caching

Anwendung für die Verarbeitung von Cache-Fehlern gestalten

Folgen Sie den Best Practices für das Standard-Cache-Design und konfigurieren Sie Ihren Cache so, dass Cache-Fehler und die Nichtverfügbarkeit von Diensten verarbeitet werden können. Weitere Informationen zur Verfügbarkeitszusicherung von Memorystore for Memcached finden Sie im Service Level Agreement (SLA).

Gestalten Sie Ihre Anwendung so, dass Cache-Fehler und vorübergehende Dienstausfallzeiten nicht dazu führen, dass Anwendungen keine Daten mehr aus der zugrunde liegenden Datenbank abrufen, die Ihre Memcached-Instanz unterstützt.

Sollte der Schlüsselbereich nicht verfügbar sein, warten Sie und führen Sie den Vorgang mit exponentiellem Backoff noch einmal aus. Legen Sie ein Zeitlimit fest, nach dem Ihre Wiederholungsversuche beendet werden.

Wir empfehlen die Verwendung des Auto Discovery-Dienstes von Memorystore for Memcached. Dieser Dienst automatisiert die Verwaltung der Cluster-IP-Adresse, wenn Sie Knoten zum Cluster hinzufügen oder daraus entfernen. Eine Anleitung zum Einrichten von Auto Discovery für einen Cluster finden Sie unter Auto Discovery-Dienst verwenden.

Parameter max-item-size ordnungsgemäß konfigurieren

In diesem Abschnitt wird erläutert, wie Sie den Parameter max-item-size am besten konfigurieren. Eine Anleitung zum Anpassen dieses Konfigurationsparameters finden Sie unter Memcache-Instanzen konfigurieren. Eine vollständige Liste der verfügbaren Memcached-Konfigurationsparameter erhalten Sie unter Memcached-Konfigurationen.

Unterstützte Werte und Standardwerte

Bei Open-Source-Memcached ist für max-item-size der Mindestwert 1KiB, der Höchstwert 1 GiB und der Standardwert 1 MiB. Für Memorystore for Memcached beträgt der Mindestwert 512 KiB, der Höchstwert 128 MiB und der Standardwert 1 MiB. Außerdem muss jeder Wert, den Sie für diese Konfiguration festlegen, durch 512 KiB ohne Rest teilbar sein.

Eintrag größer als der konfigurierte Wert für max-item-size zwischenspeichern

Wenn Sie versuchen, einen Eintrag im Cache zu speichern, der größer als der konfigurierte Wert für max-item-size ist, schlägt der Vorgang für Memcached fehl und es wird "false" zurückgegeben. Gestalten Sie nach Möglichkeit Ihre Anwendung so, dass dieser Fehler aus dem Memcached-OSS-Client angezeigt wird, damit Sie ihn beheben können. Der Versuch, einen Eintrag zu zwischenzuspeichern, der größer als der konfigurierte Wert für max-item-size ist, kann zu einer hohen Latenz Ihrer Instanz führen.

Höchstwert für max-item-size festlegen

Sie können manche Probleme mit dem Parameter max-item-size vermeiden, wenn Sie dafür den Höchstwert festlegen. Dies ist jedoch keine Best Practice, daher sollten Sie diesen Ansatz nicht in der Produktion nutzen. Die Arbeitsspeicherverwaltung von Memcached basiert auf Slabs. Das Speichern von Elementen, die größer als ein Slab sind, führt zu einer ineffizienten Speicherzuordnung.

Konfigurationsprobleme für max-item-size vermeiden

Ermitteln Sie zuerst, welche maximale Elementgröße für Ihren Cache erforderlich ist. Legen Sie dann max-item-size so fest, dass der Wert etwas größer als das größte Element ist.

Beachten Sie, dass sich die Größe der in Ihren Cache geschriebenen Werte in Ihrer Anwendung im Laufe der Zeit ändern kann. Außerdem besteht die Möglichkeit, dass der Cluster falsch konfiguriert ist, z. B. durch Migration von einer Umgebung zu einer anderen. Sie können zusätzlich die maximale Elementgröße in Ihrer Anwendung validieren, damit die Anfrage abgelehnt wird, wenn Ihre Anwendung versucht, Elemente zu speichern, die größer als die konfigurierte Einstellung sind.

Unausgeglichenen Memcached-Cluster ausgleichen

Ursachen für unausgeglichene Cluster und damit verbundene Risiken

In seltenen Fällen können beim Erstellen von Memcached-Instanzen Knoten in den Zonen in einer Region ungleichmäßig verteilt sein. Dies ist dann der Fall, wenn eine Zone zu dem Zeitpunkt nicht verfügbar ist, an dem Sie den Cluster bereitstellen.

Ein unausgeglichener Cluster erhöht das Risiko von Datenverlusten, da Knoten nicht so gleichmäßig verteilt sind, wie es möglich wäre. Der Cluster gleicht dies nicht automatisch aus, wenn die ausgefallene Zone wieder verfügbar ist.

Cluster wieder ausgleichen

Sie können den Cluster ausgleichen und dafür die Anzahl der Knoten in Ihrem Cluster vorübergehend erhöhen und anschließend die Anzahl der Knoten auf den ursprünglichen Wert herunterskalieren. Durch dieses Herauf- und Herunterskalieren kann das Memorystore for Memcached-System die Knoten gleichmäßig auf die verfügbaren Zonen verteilen.

Ob diese Methode für das Ausgleichen eines Clusters erfolgreich ist, hängt von der Verfügbarkeit der betreffenden Zonen ab. Google Cloud listet derzeit die verfügbaren/nicht verfügbaren Zonen nicht auf. Sie können also nur feststellen, dass die Zone verfügbar ist, wenn die Knoten während der Skalierung korrekt verteilt werden.

Best Practices für Cloud Monitoring

Sie sollten mit Cloud Monitoring einige wichtige Memorystore for Memcached-Messwerte kontinuierlich prüfen, um die Leistung Ihres Caches im Zeitverlauf zu beobachten:

  • Arbeitsspeichernutzung (memcache.googleapis.com/node/cache_memory)
  • CPU-Auslastungsquote (memcache.googleapis.com/node/cpu/usage_time)

Wenn Sie diese beiden Messwerte im Zeitablauf verfolgen, können Sie feststellen, wie effizient Ihr Cluster genutzt wird und ob Sie die Clustergröße erhöhen oder verringern müssen.

Wenn die Messwerte beispielsweise anzeigen, dass Arbeitsspeichernutzung und CPU-Auslastung im Laufe der Zeit auf über 80 % angestiegen sind, ist es möglich, dass sich der Trend fortsetzt. Dann können Sie die Instanzgröße frühzeitig erhöhen, damit im Cache Raum für neue Werte ist, wenn sich die Ressourcenanforderungen Ihrer Anwendung erhöhen.

Es empfiehlt sich, eine Benachrichtigung einzurichten, die gesendet wird, wenn Arbeitsspeichernutzung und CPU-Auslastung 80 % erreichen.

Alternativ können Sie durch die Prüfung dieser Messwerte im Zeitablauf feststellen, ob alle aktuell verfügbaren Speicher- und CPU-Ressourcen genutzt werden. Ist dies nicht der Fall, wäre es kostengünstiger, die Clustergröße zu reduzieren.

Nächste Schritte