Ich versuche herauszufinden, was eine sichere Einstellung für 'maxmemory' in der folgenden Situation wäre:
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.
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.
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.