Warum scheint Ubuntu kein Gedächtnis freizugeben?

11

Ich arbeite mit Apache2 + PHP und anderen Webserver-Apps.

Ich habe Monitor als Sitzung, die eine Verbindung zu einem Webserver herstellt. RAM-Speicher ist voll.

Beim Trennen einer Sitzung wird jedoch der RAM-Speicher nicht freigegeben.

Ich habe Monitor via free -mund es zeigt unveröffentlichten Speicher, auch wenn jetzt keine Sitzung verbunden ist.

Gibt es eine Lösung?

Tejaskumar Panzer
quelle
Sei vorsichtig mit free -m. Die erste Zeile zeigt die Speichernutzung einschließlich der Puffer und Caches. Die zweite Zeile zeigt den verwendeten Speicher abzüglich der Puffer und des Caches, der der tatsächlich verfügbare Speicher ist. Sie sollten auch etwas wie htopzu Überwachungszwecken versuchen . Es ist viel intuitiver und in den offiziellen Repos verfügbar. Wenn Ihnen wirklich der Arbeitsspeicher ausgeht, geben Sie uns weitere Informationen wie die Art der von Ihnen ausgeführten Webanwendung, die Menge des verfügbaren Arbeitsspeichers, die verwendeten Daten und alles. Fügen Sie die Ausgabe von free -m und dergleichen ein.
Johnride
3
Es gibt keine Lösung, weil es kein Problem gibt. Linux verwendet den verfügbaren RAM als Puffer für Dateien.
Führen Sie CMD
Aber hier nach dem Feuerbefehl: sudo sync && sudo sysctl -w vm.drop_caches = 3 Es zeigt mir richtig freien verfügbaren Speicher und auch Apps funktionieren besser.
Tejaskumar Panzer
Ich bin am erfahrensten mit VPS-Server und habe kürzlich Debian 9.0 gegründet, das perfekt mit Speicherverwaltung zusammenarbeitet.
Tejaskumar Tank

Antworten:

12

Mit diesem Befehl können Sie nicht verwendeten Speicher freigeben:

sudo sync && sudo sysctl -w vm.drop_caches=3

Dieser Befehl synchronisiert zwischengespeicherte Daten und schreibt zur Laufzeit einen Betriebssystemparameter unter / proc / sys / vm / drop_caches . Dieser Parameter wird einmal vom Kernel gelesen und gibt dann den nicht verwendeten Speicher frei.

Grundsätzlich reserviert der Kernel drei Abschnitte im Cache, die die Speichernutzung erhöhen könnten:

  • Seitencache
  • dentries
  • Inodes

Wenn Sie in diesen Parameter schreiben, löscht der Kernel saubere Seitencaches, Dentries und Inodes aus dem RAM, wodurch dieser Speicher frei wird. Es können drei Werte zugewiesen werden:

  1. vm.drop_caches = 1 freie Seitencaches.
  2. vm.drop_caches = 2 freie Einträge und Inodes.
  3. vm.drop_caches = 3 freie Seitencaches, Einträge und Inodes.

Wichtig: Nach der Ausführung wird der normale Zustand wiederhergestellt, dh das Zwischenspeichern von Seitencaches, Dentries und Inodes wird erneut gestartet. Verwenden Sie es abhängig von Ihrer Serverkonfiguration und -anwendung.

Guillermo Garcia
quelle
1
Können Sie bitte etwas näher erläutern?
AB
Dieser Befehl ist nur nützlich, wenn wöchentlich oder täglich am Ende des Tages der gesamte nicht verwendete Speicher freigegeben werden soll, auch 3 oder 2 oder 1 mit jeweils unterschiedlichen Zwecken. Versuchen Sie dies nicht auf einem sitzungsgeladenen Server.
Tejaskumar Tank
1
Bearbeiten Sie Ihre Antwort, nicht als Kommentar.
AB
sudo sync & sudo sysctl -w vm.drop_caches=3
Nyxynyx
1
@ GuillermoGarcia Verwenden von Bash in Ubuntu 18.04.3. Ich musste sudoein zweites Mal einschließen . Ansonsten bekomme ich den Fehlersysctl: permission denied on key 'vm.drop_caches'
Nyxynyx