Memorystore for Valkey – Häufig gestellte Fragen

Auf dieser Seite finden Sie Antworten auf die folgenden häufig gestellten Fragen zur Verwendung von Memorystore for Valkey:

Wie viel Arbeitsspeicher und CPU sollten Sie verwenden?

Wir empfehlen, dass die Arbeitsspeichernutzung 80 % nicht übersteigt. Außerdem empfehlen wir, eine durchschnittliche CPU-Auslastung von 60 % zu verwenden. So können Sie den Verlust einer einzelnen Verfügbarkeitszone tolerieren, was etwa einem Drittel Ihrer Gesamtkapazität entspricht. In diesem Szenario beträgt die durchschnittliche CPU-Auslastung auf den verbleibenden Knoten etwa 90%.

Wie können Sie die CPU- und Arbeitsspeichernutzung überwachen?

Verwenden Sie den Messwert /instance/cpu/maximum_utilization, um die CPU-Auslastung sowohl für den primären Memorystore for Valkey-Knoten als auch für alle zugehörigen Lesereplikate zu überwachen. Dieser Messwert gibt die maximale CPU-Auslastung auf allen Knoten in Ihrer Instanz an, von 0,0 (0%) bis 1,0 (100%). Weitere Informationen finden Sie unter Best Practices für die CPU-Auslastung.

Verwenden Sie den Messwert /instance/node/memory/utilization, um den Arbeitsspeicher zu überwachen, der von Ihrem primären Memorystore for Valkey-Knoten und den zugehörigen Lese replikaten verwendet wird. Dieser Messwert gibt die Arbeitsspeichernutzung für einen einzelnen Knoten in Ihrer Instanz an, von 0,0 (0%) bis 1,0 (100%).

Wie legen Sie Benachrichtigungen fest, um die CPU- und Arbeitsspeichernutzung zu überwachen?

Verwenden Sie Cloud Monitoring, um Benachrichtigungen für die CPU- und Arbeitsspeichernutzung festzulegen. Sie können beispielsweise eine Benachrichtigung festlegen, die Sie informiert, wenn der /instance/memory/maximum_utilization Messwert einen von Ihnen festgelegten Schwellenwert überschreitet. Weitere Informationen finden Sie unter Cloud Monitoring-Benachrichtigung für die Arbeitsspeichernutzung festlegen.

Wie viele Verbindungen von Ihrer Clientanwendung sollten Sie geöffnet lassen?

Wir empfehlen, Benchmarks für Ihren Client zu verwenden, um die optimale Einstellung zu ermitteln. Der empfohlene Ausgangspunkt für jeden Client ist eine Verbindung pro Valkey-Knoten. Weitere Informationen finden Sie unter Überlastung von Verbindungen in Valkey vermeiden.

Wir empfehlen außerdem, Pipelining für Ihren Client zu aktivieren, damit er mehr Anfragen schneller verarbeiten kann.

Wie überwachen Sie die Anzahl der Clientverbindungen für Ihre Instanz?

Verwenden Sie den /instance/node/clients/connected_clients-Messwert, um die Anzahl der verwendeten Clientverbindungen zu überwachen. Dieser Messwert gibt die Anzahl der Clients an, die mit jedem Knoten Ihrer Instanz verbunden sind.

Was tun Sie, wenn Sie zu viele Clientverbindungen haben?

Die maximale Anzahl Ihrer Clientverbindungen, die Sie mit dem Messwert /instance/clients/maximum_connected_clients ermitteln können, muss kleiner sein als der Wert, der mit dem Parameter maxclients verknüpft ist. Wenn die Werte gleich sind, gehen Sie so vor:

Was tun Sie, wenn ein bevorstehendes Ereignis den Traffic für Ihr Unternehmen in die Höhe treiben wird? Was tun Sie?

Sie können Memorystore for Valkey so konfigurieren, dass es Ihren geschäftlichen Anforderungen entspricht. In diesem Szenario können Sie die Kapazität für Ihre Instanz auf folgende Weise erhöhen:

  • Sie können der Instanz Shards hinzufügen. Dadurch kann die Instanz mehr CPU-Auslastung nutzen, um ein größeres Daten- oder Trafficvolumen zu verarbeiten. Die Kapazität Ihrer Instanz wird durch die Anzahl der Shards in Ihrer Instanz bestimmt. Durch das Hinzufügen von Shards kann Ihre Anwendung eine erhöhte Nachfrage ohne Leistungseinbußen bewältigen.
  • Sie können den Knotentyp in einen größeren Knotentyp ändern. Dadurch erhält die Instanz mehr Arbeitsspeicher. Die Kapazität Ihrer Instanz wird durch den Knotentyp Ihrer Instanz bestimmt. Sie können beispielsweise den Knotentyp von standard-small in highmem-medium ändern.

Wir empfehlen, die Kapazität für Ihre Instanz einige Tage vor dem Ereignis zu erhöhen. Um die Kapazität für Ihre Instanz zu skalieren und die Geschwindigkeit und Zuverlässigkeit der Skalierung zu erhöhen, sollten Sie die Skalierung in Zeiten mit geringem Traffic durchführen. Informationen zum Überwachen des Instanz-Traffics, siehe Instanzen überwachen.

Wie schützen Sie Ihre Daten?

Memorystore for Valkey bietet die folgenden Mechanismen zum Schutz Ihrer Daten:

  • IAM-Authentifizierung (Identity and Access Management): Mit IAM können Sie den Anmeldezugriff für Ihre Nutzer und Dienstkonten verwalten. Die IAM-basierte Authentifizierung ist in Valkey AUTH integriert, sodass Sie Anmeldedaten (IAM-Tokens) nahtlos rotieren können, ohne auf statische Passwörter angewiesen zu sein.
  • Verschlüsselung während der Übertragung: Verschlüsseln Sie den gesamten Valkey-Traffic mit dem TLS-Protokoll (Transport Layer Security). Wenn die Verschlüsselung während der Übertragung aktiviert ist, kommunizieren Valkey-Clients sicher über eine Verbindung. Valkey-Clients, die nicht für TLS konfiguriert sind, werden blockiert.

Was sind die Best Practices für Clientcode?

Um Clientcode optimal mit Memorystore for Valkey zu verwenden, empfehlen wir die folgenden Best Practices:

  • Verwenden Sie einen von uns empfohlenen Client wie valkey-go, iovalkey, valkey-py oder Valkey GLIDE, um Ihre Anwendung mit einer Memorystore for Valkey-Instanz zu verbinden, für die der Clustermodus aktiviert ist.

    Wenn Sie einen anderen Client verwenden, müssen Sie einen clusterfähigen Valkey-Client verwenden, der eine Zuordnung von Hash-Slots zu den entsprechenden Knoten in der Instanz verwaltet. So können Anfragen an die richtigen Knoten gesendet werden. Dadurch wird der Leistungsmehraufwand durch Weiterleitungen vermieden. Weitere Informationen finden Sie unter Best Practices für Valkey-Clients.

  • Wir empfehlen, die Zeitüberschreitungsintervalle für Verbindungen auf fünf Sekunden und die Zeitüberschreitungsintervalle für Anfragen auf zehn Sekunden festzulegen. Wenn Sie die Zeitüberschreitungen auf kleinere Intervalle festlegen, kann es in Memorystore for Valkey zu Reconnect-Stürmen kommen, die den Dienst gefährden können.

  • Verwenden Sie den exponentiellen Backoff als Standardstrategie zur Fehlerbehandlung für Netzwerkanwendungen, wenn der Client eine fehlgeschlagene Anfrage regelmäßig noch einmal sendet, wobei die Abstände zwischen den Anfragen immer länger werden.

  • Verwenden Sie unsere Codebeispiele für Clientbibliotheken. Die Standardwerte für den valkey-go-Client erfüllen beispielsweise alle unsere Empfehlungen, sodass Sie für diesen Client nichts konfigurieren müssen.

Welche Optionen haben Sie für die Datenresilienz?

Memorystore for Valkey bietet die folgenden Funktionen für die Datenresilienz:

  • Hochverfügbarkeit: Memorystore for Valkey bietet redundante Kapazität in Replikatknoten. Im Falle eines Fehlers kann Memorystore for Valkey diese Kapazität ohne Ausfallzeiten nutzen.

  • Persistenz: Wenn Ihre Umgebung unerwartet abstürzt, stellt Memorystore for Valkey die Umgebung automatisch wieder her. Das wird als Persistenz bezeichnet.

    Memorystore for Valkey bietet die folgende Art von Persistenz:

    • RDB-Persistenz (Redis Database): Schützen Sie Ihre Daten, indem Sie Snapshots Ihrer Daten in einem dauerhaften Speicher speichern. Sie wählen die Häufigkeit dieser Snapshots aus, indem Sie ein Snapshot-Intervall festlegen. Bei Knotenausfällen können Sie Daten auch dann wiederherstellen, wenn ein Failover nicht möglich ist.

    • AOF-Persistenz (Append-Only File): Verwenden Sie diese Art der Persistenz, wenn Sie der Datendauerhaftigkeit Priorität einräumen möchten. Bei der AOF-Persistenz werden Daten dauerhaft gespeichert, indem jeder Schreibbefehl in einer Logdatei namens AOF-Datei aufgezeichnet wird. Bei einem Systemausfall oder Neustart spielt der Server die Befehle der AOF-Datei sequenziell ab, um Ihre Daten wiederherzustellen.

  • Sicherungen: Stellen Sie Ihre Memorystore for Valkey-Instanzen manuell zu einem bestimmten Zeitpunkt wieder her. Außerdem können Sie Sicherungen verwenden, um Daten zu exportieren und zu analysieren.

    Sicherungen sind in folgenden Szenarien nützlich:

    • Notfallwiederherstellung: Verwenden Sie Sicherungen als Teil eines Notfallwiederherstellungsplans. Im Falle eines Notfalls können Sie Ihre Daten in einer neuen Memorystore for Valkey-Instanz wiederherstellen.
    • Datenmigration: Migrieren Sie Daten zwischen verschiedenen Memorystore for Valkey Instanzen. Sie können Daten zusammenführen oder in eine andere Region verschieben. Außerdem können Sie Sicherungen aus Memorystore for Valkey-Instanzen wiederherstellen.
    • Daten teilen: Teilen Sie Daten zwischen verschiedenen Teams oder Anwendungen. Dies ermöglicht die Zusammenarbeit, die Offlinedatenanalyse und den Datenaustausch.
    • Compliance: Erstellen Sie regelmäßig Sicherungen von Cachedaten für Compliance Zwecke.
    • Sicherungen planen: Neben dem Erstellen einer On-Demand-Sicherung können Sie einen Sicherungszeitplan für eine Instanz konfigurieren. Dadurch initiiert Memorystore for Valkey regelmäßige Sicherungen für die Instanz.
  • Regionenübergreifende Replikation: Erstellen Sie sekundäre Instanzen aus einer primären Instanz, um Ihre Instanz für Lesevorgänge in verschiedenen Regionen verfügbar zu machen. Sekundäre Instanzen bieten auch Redundanz für Notfallwiederherstellungsszenarien im Falle von regionalen Ausfällen.

    Die regionenübergreifende Replikation in Memorystore for Valkey bietet folgende Vorteile:

    • Notfallwiederherstellung: Wenn die Region der primären Instanz nicht mehr verfügbar ist, können Sie eine sekundäre Instanz in einer anderen Region trennen oder zu ihr wechseln, um Lese- und Schreibanfragen zu verarbeiten. Sekundäre Instanzen verarbeiten Leseanfragen, ohne dass ein Befehl zum Wechseln oder Trennen ausgegeben wird.
    • Geografisch verteilte Daten: Durch die geografische Verteilung der Daten werden die Daten näher an Sie herangebracht und die Leselatenz wird verringert.
    • Geografisches Load-Balancing für Lesetraffic: Bei langsamen oder überlasteten Verbindungen in einer Region können Sie den Traffic an eine andere Region weiterleiten.

Wie erzielen Sie die beste Leistung für Ihre Instanz?

So optimieren Sie die Leistung Ihrer Memorystore for Valkey-Instanz:

  • Folgen Sie den Best Practices für die Arbeitsspeicherverwaltung und die CPU-Auslastung, da diese Praktiken die beste Leistung für Ihre Instanz erzielen.
  • Verwenden Sie Audit-Logs, um den Zugriff auf Ihre Instanz zu überwachen. So können Sie feststellen, ob es Probleme im Zusammenhang mit Administratoraktivitäten für die Instanz (das Audit-Log Admin Activity) oder Nutzern gibt, die auf Instanzdaten zugreifen (das Audit-Log Data Access).
  • Verwenden Sie Lesereplikate. In Memorystore for Valkey ist die Replikation asynchron. Daher werden die Daten im primären Knoten nicht sofort in den Replikaten angezeigt. Wenn Sie mit leicht veralteten Daten arbeiten können, verwenden Sie Lesereplikate. Dadurch werden der Lesedurchsatz und die Latenz erheblich verbessert.
  • Vermeiden Sie ressourcenintensive Valkey-Befehle. Die Verwendung dieser Befehle kann zu den folgenden Leistungsproblemen führen:

    • Hohe Latenz und Client-Zeitüberschreitungen
    • Arbeitsspeichermangel durch Befehle, die die Arbeitsspeichernutzung erhöhen
    • Datenverlust bei der Knotenreplikation und ‑synchronisierung, weil der Valkey-Hauptthread blockiert ist
    • Zu wenige Ressourcen für Systemdiagnosen, Beobachtbarkeit und Replikation

    Verwenden Sie stattdessen ressourcenschonendere Befehle. Verwenden Sie beispielsweise nicht den Befehl KEYS, um den gesamten Schlüsselbereich zu scannen. Verwenden Sie stattdessen SCAN.

    Weitere Informationen zu ressourcenintensiven Valkey-Befehlen und ihren ressourcenschonenden Alternativen finden Sie unter Ressourcenintensive Valkey-Befehle.

  • Wenn Ihre geschäftlichen Anforderungen es zulassen, eine Ablaufzeit für Ihre Daten festzulegen, empfehlen wir Ihnen, dies zu tun. Durch das Festlegen einer Ablaufzeit wird der Arbeitsspeicherverbrauch reduziert.

  • Führen Sie ein Upgrade der Version Ihrer Memorystore for Valkey-Instanz auf die neueste Instanzversion durch. Neuere Softwareversionen bieten Verbesserungen in Bezug auf Zuverlässigkeit und Leistung.

  • Ändern Sie den Wert des Parameters maxmemory-policy. Dieser Parameter gibt das Verhalten von Valkey an, wenn die Daten Ihrer Instanz das Limit maxmemory erreichen.

    Wenn der Speicher Ihrer Instanz voll ist und ein neuer Schreibvorgang eingeht, werden die Schlüssel von Valkey gemäß der maxmemory-Richtlinie Ihrer Instanz entfernt, um Platz für den Schreibvorgang zu schaffen. Wenn der Wert des
    maxmemory-policy Parameters auf noeviction gesetzt ist, gibt Memorystore for Valkey einen Fehler zurück, wenn Ihre Instanz den maximalen Arbeitsspeicher erreicht. Memorystore for Valkey überschreibt oder entfernt jedoch keine Daten. Ändern Sie den Wert des Parameters maxmemory-policy, damit Memorystore for Valkey Schlüssel entfernen kann, um die Verfügbarkeit Ihrer Instanz zu verbessern.

    Weitere Informationen zu den verschiedenen Werten, die Sie für den maxmemory-policy Parameter festlegen können, finden Sie unter Maxmemory-Richtlinien. Weitere Informationen zum Aktualisieren dieses Parameters finden Sie unter Konfigurationsparameter aktualisieren.

  • Optimieren Sie Ihre Memorystore for Valkey-Instanz so, dass sie die gewünschte Cache-Trefferrate hat. So können Sie die Größe Ihrer Datenbank richtig anpassen, damit sie den entsprechenden Prozentsatz an Treffern verarbeiten kann.

    So optimieren Sie eine Instanz:

    1. Verwenden Sie die Monitoring-Messwerte total_keyspace_hits_count und total_keyspace_misses_count, um die Gesamtzahl der erfolgreichen bzw. fehlgeschlagenen Schlüsselabfragen für die Instanz zu ermitteln.
    2. Teilen Sie die Gesamtzahl der Treffer durch die Gesamtzahl der Treffer und Fehlversuche
      (d. h. Treffer/(Treffer + Fehlversuche)). Der Quotient ist Ihre Trefferrate.
    3. Skalieren Sie die Instanz, um die für Sie passende Trefferrate zu erzielen. Sie können die Anzahl der Shards erhöhen oder verringern oder den Knotentyp vergrößern oder verkleinern. Weitere Informationen finden Sie unter Instanzkapazität skalieren.

    Durch eine höhere Trefferrate werden Latenz und Durchsatz für Ihr System verbessert. Finden Sie das richtige Gleichgewicht für Ihre Leistungs-, Skalierungs- und Kostenziele.

  • Standardmäßig empfehlen wir, Leistungsbenchmarks für Ihre Instanz auszuführen, um zu ermitteln, ob mehr Verbindungen die Leistung verbessern, ohne die Verbindung zu überlasten. Der empfohlene Ausgangspunkt ist, Ihren Client so zu konfigurieren, dass er eine Verbindung zu jedem Valkey-Knoten öffnet.

  • Aktivieren Sie Pipelining für Ihren Client, damit er mehr Anfragen schneller verarbeiten kann. Verwenden Sie die Clientbibliothek, um das Pipelining zu konfigurieren. Weitere Informationen finden Sie in der Dokumentation zu dieser Bibliothek.

Wie können Sie die Hochverfügbarkeit für Ihre Instanz optimieren?

Wir empfehlen, hochverfügbare Instanzen mit mehreren Zonen anstelle von Instanzen mit einer Zone zu erstellen, da sie eine bessere Zuverlässigkeit bieten.

Wenn Sie eine hochverfügbare Instanz erstellen, empfehlen wir, den /instance/node/replication/offset Messwert zu verwenden. Mit diesem Messwert können Sie den Replikations-Offset (in Byte) für einen einzelnen Knoten in Ihrer Instanz überwachen. Der Replikations-Offset ist die Anzahl der Byte, die Memorystore for Valkey zwischen dem primären Knoten und den Lesereplikaten noch nicht repliziert hat.