Wenn Sie top
im Batch-Modus arbeiten, um die Speichergrößen regelmäßig zu melden, können Sie sehen, wer den Speicher verwendet, wenn die Dinge nach Süden gehen. Die Ausführung sar
im Batch-Modus sollte eine gute Diagnose der Speichernutzung und der zugehörigen E / A-Vorgänge ermöglichen. Wenn Sie munin
das System überwachen, sollten Sie eine grafische Darstellung erhalten, in der genau angegeben ist, wofür der Speicher verwendet wird. Dies kann sehr hilfreich sein.
Sie können limits.conf verwenden, um die maximale Kerngröße von Programmen zu begrenzen. Richtig eingestellt, sollte dies alle Programme töten, bei denen Speicherplatz verloren geht. Dies funktioniert mit dem Modul pam_limits. Limits können auch mit dem ulimits
Befehl gesetzt werden.
Sie führen einige Programme aus, die viel Speicher benötigen könnten. Einige Dinge, die Sie betrachten könnten, umfassen.
- Schlecht programmierte Anwendungen
apache2
können Speicherverluste verursachen. In diesem Fall sollte die Speichergröße zunehmen. Sie können apache2 MaxRequestsPerChild
so einstellen , dass Kinder nach einer bestimmten Anzahl von Verwendungen wiederverwendet werden, indem Sie den Wert auf 100 oder so setzen. Wenn das Problem dadurch behoben wird, müssen Sie das Leck beheben. Ich würde das zuerst sehen.
- MySQL versucht möglicherweise, Daten in den Speicher zu laden. Wenn Sie eine Menge Daten im Speicher haben, kann dies zu einer Überlastung führen, sollte jedoch nicht so dramatisch sein, wie Sie es sehen.
- Wenn Sie ein großes
tmpfs
Dateisystem bereitgestellt haben, kann es zu Speicherverlusten kommen, wenn Dateien bei der Verwendung nicht gelöscht werden. Große, langlebige Dateien können ebenfalls ein Problem sein.
- Wenn das Problem ungefähr zur gleichen Tageszeit auftritt, ist möglicherweise ein Programm geplant, bei dem Speicherplatz verloren geht.
- Wenn Sie ein Programm haben, das gemeinsam genutzten Speicher zuweist, ihn jedoch nicht vor dem Beenden freigibt, besteht ein relativ unsichtbarer Speicherverlust. Wenn der gemeinsam genutzte Speicher im Speicher gesperrt ist, wird möglicherweise ein Austausch erzwungen. Die Menge des verfügbaren gemeinsam genutzten Speichers ist normalerweise relativ begrenzt.
- Das Liquidsoap + Icecast-Bundle kann Pufferprobleme verursachen, die Speicherplatz beanspruchen. Ich habe diese Kombination nicht verwendet, daher bin ich mir nicht sicher, wie dies aussehen würde.
Normaler Speicherverbrauch: Freier Speicher ist etwas, von dem Sie nicht viel wollen. Wenn Ihr System schon lange nicht mehr funktioniert und viel freier Speicher vorhanden ist, stimmt etwas nicht. Jedes Mal, wenn Sie eine Datei lesen oder schreiben, werden die Blöcke in den Puffercache verschoben. Dies verringert Ihren freien Speicher und ist eine gute Sache. Das System verfügt über genügend freien Speicherplatz, um einige Programme zu starten, ohne an anderer Stelle nach Speicher zu suchen. Da viele Programme schnell ausgeführt werden, wird ihr Speicher in den freien Pool zurückgeschrieben, wenn sie nicht mehr ausgeführt werden.
Wenn Sie eine Datei lesen, die sich im Puffercache befindet, ist kein Plattenzugriff erforderlich, und der Lesevorgang wird aus dem Puffercache aufgelöst. Schreibvorgänge verwenden einen ähnlichen Mechanismus. Wenn Ihr System Speicher benötigt, wird der Puffercache als einer der ersten Bereiche verwendet. Die meisten Puffer können sofort freigegeben werden.
Wenn Sie einen Speicherverlust haben, werden Sie freien Speicher sehen und die Puffer beginnen sich zu verkleinern. Dies ist immer noch kein schwerwiegendes Problem, da der verlorene Speicher eventuell verschoben werden sollte, um den Speicherplatz auszutauschen. Ihr System läuft weiterhin einwandfrei, bis Sie den Auslagerungsspeicher ausfüllen und den verbleibenden freien Speicherplatz so weit ausschöpfen, dass die Punktprogramme nicht gestartet werden können. Es ist typisch, dass eine kleine Menge an Swap Space verwendet werden kann.