Das Redis des Unternehmens schlägt manchmal beim Speichern der Datenbank im Hintergrund fehl. Der folgende Alarm wird im Protokoll gefunden, der wahrscheinlich dadurch verursacht wird:
[13223] 17. März 13:18:02.207 # WARNUNG overcommit_memory ist auf 0 gesetzt! Das Speichern im Hintergrund kann bei geringem Arbeitsspeicher fehlschlagen. Um dieses Problem zu beheben, fügen Sie „vm.overcommit_memory = 1“ zu /etc/sysctl.conf hinzu und starten Sie dann neu oder führen Sie den Befehl „sysctl vm.overcommit_memory=1“ aus, damit dies wirksam wird.
Nachdem ich gesucht habe, habe ich herausgefunden, dass einige Leute auf das gleiche Problem gestoßen sind wie ich, und es wird grundsätzlich festgestellt, dass es dadurch verursacht wird.
Es ist 内存分配策略
Optionale Werte: 0, 1, 2.
0 bedeutet, dass der Kernel prüft, ob genügend Speicher für die Verwendung durch den Anwendungsprozess vorhanden ist. Wenn genügend Speicher vorhanden ist, schlägt die Speicheranwendung fehl und es wird ein Fehler zurückgegeben Bewerbungsprozess.
1 gibt an, dass der Kernel die Zuweisung des gesamten physischen Speichers unabhängig vom aktuellen Speicherstatus zulässt.
2, was darauf hinweist, dass der Kernel Speicher zuweisen darf, der die Summe des gesamten physischen Speichers und Auslagerungsspeichers übersteigt kann mehr größere Programme ausführen. Denn nach der Speicherbeantragung wird der Speicher nicht sofort genutzt. Diese Technik wird Overcommit genannt. Wenn Linux erkennt, dass nicht genügend Speicher vorhanden ist, löst es den OOM-Killer aus (OOM steht für „Insuffizienter Speicher“). Um Speicher freizugeben, wird dem Beenden einiger Benutzermodusprozesse Vorrang vor dem Beenden von Kernel-Threads eingeräumt.
Es ist ganz einfach, folgen Sie einfach den Anweisungen (setzen Sie vm.overcommit_memory auf 1):
Es gibt drei Möglichkeiten, die Kernel-Parameter zu ändern, aber Sie benötigen Root-Berechtigungen:
(1) Bearbeiten/ etc/sysctl.conf, ändern Sie vm.overcommit_memory=1 und dann sysctl -p, damit die Konfigurationsdatei wirksam wird
Das obige ist der detaillierte Inhalt vonSo beheben Sie den overcommit_memory-Fehler in der Redis-Datenbank unter Linux. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!