Auswahl der Maximalspeichergröße für redis und der BGSAVE-Speicherauslastung

9

Ich versuche herauszufinden, was eine sichere Einstellung für 'maxmemory' in der folgenden Situation wäre:

  • write-schwere Anwendung
  • 8 GB RAM
  • Nehmen wir an, dass andere Prozesse etwa 1 GB benötigen
  • Dies bedeutet, dass die Speicherauslastung des Redis-Prozesses niemals 7 GB überschreiten darf
  • Speicherbelegung verdoppelt sich bei jedem BGSAVE-Ereignis, weil:

In den Redis Dokumenten wird Folgendes über die Speicherauslastung bei BGSAVE-Ereignissen gesagt:

  

Wenn Sie Redis in einer sehr schreibintensiven Anwendung verwenden, kann beim Speichern einer RDB-Datei auf der Festplatte oder beim erneuten Schreiben des AOF-Protokolls Redis bis zu zweimal den normalerweise verwendeten Speicher belegen.

  • Das maximale Speicherlimit wird grob mit 'used_memory' von redis-cli INFO verglichen (wie erklärt wird hier ) und nimmt anderen von redisis verwendeten Speicher nicht in Betracht

Stimmt es, dass die maximale Speichereinstellung in diesem Fall nicht höher als (8GB - 1GB) / 2 = 3,5GB gesetzt werden sollte?

Wenn dies der Fall ist, werde ich eine Pull-Anforderung für die Redis-Dokumente erstellen, um dies deutlicher zu reflektieren.

    
Matthijs van den Bos 19.02.2013, 13:31
quelle

1 Antwort

3

Ich würde in diesem Fall ein Limit von 3GB empfehlen. Ja, die Dokumente sind ziemlich korrekt und das Ausführen eines Bgsave wird für eine kurze Zeit die Speicheranforderungen verdoppeln. Ich bevorzuge es jedoch, 2 GB Speicher für das System oder maximal 40% des maximalen Speichers für einen persistenten Master zu reservieren.

Sie geben an, dass Sie eine sehr schwere Anwendung haben. In diesem Fall würde ich sehr empfehlen, dass ein zweiter Server die Speicheroperationen durchführt. Ich habe festgestellt, dass bei High-Writes und einem Bgsave die Reaktionszeit auf die Clients hoch werden kann. Es ist nicht Redis selbst, die es verursacht, sondern die Antwort des Servers selbst. Dies gilt insbesondere für virtuelle Maschinen. Bei dieser Konfiguration verwenden Sie den zweiten Server, um vom primären Server zu arbeiten und ihn auf dem Datenträger zu speichern, während der erste reaktionsfähig bleibt.

    
The Real Bill 02.03.2013, 19:15
quelle

Tags und Links