So löschen Sie RAM-Speicher-Cache, Puffer und Swap-Speicherplatz unter Linux

Wie jedes andere Betriebssystem hat GNU / Linux eine effiziente Speicherverwaltung implementiert und noch mehr. Wenn jedoch ein Prozess Ihren Speicher auffrisst und Sie ihn löschen möchten, bietet Linux eine Möglichkeit, den RAM-Cache zu leeren oder zu löschen.

RAM-Cache löschen und unter Linux austauschen

Wie lösche ich den Cache unter Linux?

Jedes Linux-System hat drei Möglichkeiten, den Cache zu leeren, ohne Prozesse oder Dienste zu unterbrechen.

1. Nur Seitencache löschen.

# sync; echo 1 > /proc/sys/vm/drop_caches

2. Klare Prothesen und Inoden.

# sync; echo 2 > /proc/sys/vm/drop_caches

3. Klar PageCache, dentries und inodes.

# sync; echo 3 > /proc/sys/vm/drop_caches 

Erklärung des obigen Befehls.

sync löscht den Dateisystempuffer. Befehl Getrennt durch ";” nacheinander ausführen. Die Shell wartet, bis jeder Befehl beendet ist, bevor sie den nächsten Befehl in der Sequenz ausführt. Wie in der Kernel-Dokumentation erwähnt, wird beim Schreiben in drop_cache der Cache bereinigt, ohne dass eine Anwendung / ein Dienst beendet wird.

Wenn Sie den Festplattencache löschen müssen, ist der erste Befehl in Enterprise und production am sichersten, da "...echo 1 > ….” nur den Seitencache löscht. Es wird nicht empfohlen, die dritte Option über "...echo 3 >” in der Produktion zu verwenden, bis Sie wissen, was Sie tun, da dadurch Seitencache, Dentries und Inodes gelöscht werden.

Ist es eine gute Idee, Puffer und Cache in Linux freizugeben, die vom Linux-Kernel verwendet werden könnten?

Wenn Sie verschiedene Einstellungen anwenden und überprüfen möchten, ob es tatsächlich speziell für E / A-umfangreiche Benchmarks implementiert ist, müssen Sie möglicherweise den Puffercache löschen. Sie können den Cache wie oben erläutert löschen, ohne das System neu zu starten, dh es sind keine Ausfallzeiten erforderlich.

Linux ist so konzipiert, dass es in den Festplatten-Cache schaut, bevor es auf die Festplatte schaut. Wenn die Ressource im Cache gefunden wird, erreicht die Anforderung die Festplatte nicht. Wenn wir den Cache bereinigen, ist der Festplatten-Cache weniger nützlich, da das Betriebssystem nach der Ressource auf der Festplatte sucht.

Außerdem verlangsamt es das System für einige Sekunden, während der Cache bereinigt wird und jede vom Betriebssystem benötigte Ressource erneut in den Festplatten-Cache geladen wird.

Jetzt erstellen wir ein Shell-Skript, um den RAM-Cache täglich um 2 Uhr morgens über eine Cron-Scheduler-Aufgabe automatisch zu löschen. Erstellen eines Shell-Skripts clearcache.sh und fügen Sie die folgenden Zeilen hinzu.

#!/bin/bash# Note, we are using "echo 3", but it is not recommended in production instead use "echo 1"echo "echo 3 > /proc/sys/vm/drop_caches"

Legen Sie die Ausführungsberechtigung für clearcache.sh datei.

# chmod 755 clearcache.sh

Jetzt können Sie das Skript aufrufen, wenn Sie den RAM-Cache leeren möchten.

Stellen Sie nun einen Cron ein, um den RAM-Cache jeden Tag um 2 Uhr morgens zu löschen. Öffnen Sie crontab zum Bearbeiten.

# crontab -e

Fügen Sie die folgende Zeile hinzu, speichern Sie sie und beenden Sie sie, um sie täglich um 2 Uhr morgens auszuführen.

0 2 * * * /path/to/clearcache.sh

Weitere Informationen zum Cron eines Jobs finden Sie in unserem Artikel über 11 Cron Scheduling Jobs.

Ist es eine gute Idee, den RAM-Cache auf dem Produktionsserver automatisch zu löschen?

Nein! ist es nicht. Stellen Sie sich eine Situation vor, in der Sie geplant haben, dass das Skript den RAM-Cache jeden Tag um 2 Uhr morgens löscht. Jeden Tag um 2 Uhr morgens wird das Skript ausgeführt und der RAM-Cache geleert. Eines Tages, aus welchem Grund auch immer, können mehr als erwartete Benutzer auf Ihrer Website online sein und Ressourcen von Ihrem Server suchen.

Zur gleichen Zeit geplant Skript laufen und löscht alles im Cache. Jetzt holen alle Benutzer Daten von der Festplatte. Dies führt zum Absturz des Servers und beschädigt die Datenbank. Löschen Sie den RAM-Cache also nur bei Bedarf und machen Sie Ihre Fußschritte, sonst sind Sie ein Cargo Cult-Systemadministrator.

Wie lösche ich den Swap-Speicher unter Linux?

Wenn Sie den Auslagerungsbereich löschen möchten, können Sie den folgenden Befehl ausführen.

# swapoff -a && swapon -a

Sie können den obigen Befehl auch zu einem obigen Cron-Skript hinzufügen, nachdem Sie alle damit verbundenen Risiken verstanden haben.

Jetzt werden wir beide obigen Befehle in einem einzigen Befehl kombinieren, um ein richtiges Skript zum Löschen des RAM-Caches und des Swap-Speicherplatzes zu erstellen.

# echo 3 > /proc/sys/vm/drop_caches && swapoff -a && swapon -a && printf '\n%s\n' 'Ram-cache and Swap Cleared'OR$ su -c "echo 3 >'/proc/sys/vm/drop_caches' && swapoff -a && swapon -a && printf '\n%s\n' 'Ram-cache and Swap Cleared'" root

Nachdem wir beide obigen Befehle getestet haben, führen wir den Befehl „free -h“ vor und nach dem Ausführen des Skripts aus und überprüfen den Cache.

RAM-Cache und Swap-Speicher löschen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.