Linux-System reagiert überhaupt nicht mehr, obwohl viel Swap-Speicherplatz frei ist

Linux-System reagiert überhaupt nicht mehr, obwohl viel Swap-Speicherplatz frei ist

Ich habe einen .NET-Dienst (Core 2.0), den ich von Windows auf Linux-Instanzen auf AWS verschoben habe. Die Instanzen sind Mikroinstanzen mit 1 GB RAM.

Ich habe der Linux-Instanz 1 GB Swap-Speicher hinzugefügt und außerdem Swappiness=100 gesetzt, aber der Server friert ein, wenn der physische Speicher voll ist. Der Prozess selbst wird so langsam, dass er fast zum Stillstand kommt, und selbst wenn man bei Bash die Eingabetaste drückt, dauert es manchmal 10 Sekunden, bis die neue Zeile erscheint.

Beim Ausführen topsehe ich, dass der freie Speicher normalerweise 10, 20 MB beträgt. Der Prozess nutzt 800 MB+ RAM und der Swap ist immer fast leer, mit einer Nutzung von maximal 20 MB. Selbst wenn ich es eine Stunde lang dort stehen lasse, wird nicht mehr davon ausgelagert.

Ich sehe, dass die Festplatten- und CPU-Guthaben bei AWS bei fast 100 % liegen, also ist die Ressourcennutzung nicht eingeschränkt. Außerdem gibt es ungefähr hundert dieser Instanzen, und ich habe sie mehrmals ersetzt. Das Verhalten ist immer gleich, es sieht also nicht wie einschlechte InstanzProblem.

Was mich stört ist, dass dies unter Windows nicht passiert ist und die Linux-Instanzen etwa 200 MB weniger Speicher für das Basissystem verwenden.

Gibt es außer der Swappiness noch andere Einstellungen, die ich anpassen muss, damit Linux mehr Speicher in den Swap-Speicher verschiebt?

Bearbeiten:Swap ist über Cloud-Init korrekt eingerichtet und übersteht Neustarts problemlos:

Aufstellen:

fallocate -l 1024M /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
sysctl vm.swappiness=100

free -mnach dem Booten:

             total       used       free     shared    buffers     cached
Mem:           993        232        760          0          7        152
-/+ buffers/cache:         72        921
Swap:         1023          0       1023

Antwort1

Ich habe das eigentliche Problem gefunden. Die Anwendung läuft im Docker undAWS blockiert absichtlich die Swap-Nutzung innerhalb von ECS-Containernaus irgendeinem Grund. Diese Blockierung hatte keine Auswirkungen auf Windows, da wir zuvor ECS nicht zur Verwaltung von Docker verwendet haben.

Nach Rücksprache mit dem Support wird kein Swap innerhalb von Containern unterstützt und man weiß auch nicht, wann das der Fall sein wird. Ich werde also ECS verlassen und Docker selbst verwalten müssen.

Antwort2

Nun, Ihr Fehler kann tatsächlich recht gering sein. Dieser hohe Swappiness-Wert verursacht bei einigen Betriebssystemkonfigurationen ein Problem. Versuchen Sie es mit einem Wert wie 15. (Nur ein Hinweis: Ihr System zu zwingen, Swap zu bevorzugen, ist eine schreckliche Idee. Ihr System muss den tatsächlichen RAM verwenden, um normal zu funktionieren. [Falls Sie es nicht wussten oder umgekehrt haben: Swappiness ist der Prozentsatz des freien RAM, bevor Swap verwendet wird. 15 bedeutet also, dass 85 % des RAM verwendet werden müssen, bevor die SWAP-Partition verwendet wird.])

Und wie haben Sie Swap-Speicher hinzugefügt? Wenn Sie nur die Konfigurationen geändert und keine neue Partition erstellt haben oder Fehler in Ihrer Datei /etc/fstab hinterlassen haben, können Sie Swap nicht verwenden und es kommt zu einem Totalausfall, wenn das System versucht, auf etwas zu schreiben, das nicht da ist oder auf das es nicht schreiben kann (oder es passiert etwas viel Interessanteres). Ich habe mit diesen Methoden weit mehr als eine Installation beschädigt.

verwandte Informationen