Kürzlich sagte mir mein Freund, dass es eine gute Idee ist, Swap auf Linux-Webservern mit genügend Speicher zu deaktivieren. Mein Server hat 12 GB und verwendet derzeit 4 GB (ohne Cache und Puffer) bei Spitzenlast.
Sein Argument war, dass in einer normalen Situation der Server niemals den gesamten Arbeitsspeicher nutzen wird, so dass die einzige Möglichkeit, auf die OutOfMemory-Situation zu stoßen, auf einen Fehler / ddos / etc zurückzuführen ist. So im Falle Swap ausgeschaltet off - System wird der Speicher ausgehen , die schließlich das Programm Hamstern Speicher abstürzen (höchstwahrscheinlich der Web - Server - Prozess) und wahrscheinlich einige andere Prozesse. Im Fall Swap eingeschaltet aufEs frisst sowohl RAM als auch Swap und führt letztendlich zum selben Absturz. Zuvor werden jedoch wichtige Prozesse wie sshd für den Swap ausgelagert und viele Swap-Vorgänge ausgeführt, was zu einer erheblichen Verlangsamung führt. Auf diese Weise kann das System unter ddos aufgrund von großen Verzögerungen völlig unbrauchbar werden und ich kann mich wahrscheinlich nicht anmelden und den Webserver-Prozess beenden oder den gesamten eingehenden Datenverkehr ablehnen (außer ssh).
Ist das richtig? Vermisse ich etwas (wie die Tatsache, dass Swap-Partition in irgendeiner Weise sehr nützlich ist, auch wenn ich genug RAM habe)? Soll ich es ausschalten?
Antworten:
Ich würde sagen, es hängt von Ihrem Anwendungsfall ab und der Rest der Antworten hat dies ziemlich gut abgedeckt. 4G Swap sind immerhin ein billiger Weg, um etwas Sicherheit zu kaufen. Und ich fühle, dass diese Billigkeit die Leute dazu bringt, es nicht ausschalten zu wollen.
Aber lassen Sie mich mit einer rhetorischen Frage antworten. Wenn Geld kein Thema ist und Sie die Wahl zwischen zwei Systemen haben - einem mit 12 GB RAM und 4 GB Swap und einem anderen mit 16 GB RAM und ohne Swap - welches würden Sie wählen? Leider würden die meisten Leute immer noch antworten, dass sie 16G RAM wählen und immer noch 4G Swap hinzufügen würden, was meinen Standpunkt verfehlt.
Und in einem anderen Punkt finde ich persönlich ein Swap-System schlimmer als ein abgestürztes System. Ein abgestürztes System würde dazu führen, dass ein Standby-Sicherungsserver viel früher die Kontrolle übernimmt. Und in einer Aktiv-Aktiv-Konfiguration (oder einer Konfiguration mit Lastenausgleich) würde ein abgestürztes System viel früher außer Rotation geraten. Wieder ein Gewinn für das No-Swap-System.
quelle
Es wird NICHT empfohlen, Swap zu deaktivieren, auch wenn Sie über genügend Arbeitsspeicher verfügen. Wenn Ihr Server mehr Arbeitsspeicher benötigt und diesen nicht erhalten hat, stürzt er ab. Dies kann jedoch (bis zu einem gewissen Grad) verhindert werden, wenn Sie einen Swap-Bereich haben.
Ja, Ihre Serverleistung wird durch die Verwendung von Swap beeinträchtigt, aber zumindest wird es betriebsbereit und zugänglich sein. Sie können dann planen, bei Bedarf mehr Speicher hinzuzufügen, wenn Ihr Server Swap verwendet.
Ich fand diese Seite über Tausch. Schauen Sie sich den 3. Abschnitt an.
Anstatt Swap auszuschalten, können Sie die Swapiness steuern .
quelle
Nein, das ist keine gute Idee. "Ein Prozess ist verrückt geworden" bedeutet, dass Sie proaktiv bereits angerufen haben sollten
ulimit -d
Zum oder vor der Prozesserstellungszeit, um ein Limit für den Speicher pro Prozessdatensegment festzulegen - und möglicherweise ein Limit für die Anzahl der Threads
ulimit -T
pro Prozess. ulimit ist dein Freund. Bitte lesen Sie eine der Anleitungen zur Speicheroptimierung, bevor Sie den Swap ausschalten. Sie können Kernel-Parms auch auf einige Dinge ändern, um zu versuchen, DOS-Angriffe oder schlechte Programme zu behandeln.
Betrachten Sie es so: Der gesamte Arbeitsspeicher auf Ihrem System ist RAM + Swap. Wenn Sie über 12 GB Swap verfügen, halbieren Sie die System-VM-Kapazität, indem Sie Swap deaktivieren. Schlechte Idee. Dies ist eigentlich keine Debatte, es handelt sich lediglich um eine Lektüre dessen, was andere Menschen aus früheren schlechten Erfahrungen über Jahre hinweg gewusst haben. Möglicherweise muss Ihr Freund auch etwas lesen.
quelle
Wie bereits erwähnt, können Sie Ihren Server mithilfe von Swap effektiv stoppen, es sei denn, dies ist unbedingt erforderlich, indem Sie den Parameter "swappiness" verwenden. Hiermit wird gesteuert, wie aggressiv der Kernel Speicherseiten auslagert.
Sie können sehen, auf was es aktuell eingestellt ist:
und du kannst es "live" bearbeiten mit (als root):
Fügen Sie Folgendes zu /etc/sysctl.conf hinzu, damit es bestehen bleibt:
quelle
Sie können auch mit zRAM in den Arbeitsspeicher wechseln. Ich denke, das ist eine großartige Idee! Für die Leistung ist wie überhaupt kein Swap, sondern verhindert auch die Abstürze, wenn das System sehr belastet ist!
Schau dir das an:
http://www.webupd8.org/2011/10/increased-performance-in-linux-with.html
Meine Erfahrung: Auf dieser Maschine, auf der ich gerade schreibe, habe ich den Swap deaktiviert, weil ich 4 GB RAM habe (2009 war es viel!). Ich hatte nur ein paar Probleme, eines davon öffnete versehentlich wie 127 Bilder gleichzeitig!
ABER .. das ist eine Workstation, und ich kann es mir leisten, neu zu starten, wenn es hängt. In einem Server denke ich, ist es besser, Swap zu haben, und der Swap-in-RAM klingt gut für mich.
quelle
Wie bereits ausführlich dargelegt, ist dies keine gute Idee. Wenn nichts anderes, gibt dir Swap eine Atempause, wenn die Dinge nicht ganz normal sind. Ich schaue zB auf einem System, das normalerweise nur wenige Besucher pro Tag hat, gab es einen massiven Traffic-Anstieg, der durch die Erwähnung einer Seite in einer Zeitschrift verursacht wurde. Dies führte dazu, dass der Webserver zum ersten Mal seit seiner Inbetriebnahme Swap Space nutzte. Ohne diesen Swap Space wäre es nicht sehr gut gelaufen.
quelle
Keine gute Idee. Sie können 2 Auslagerungsdateien mit unterschiedlicher Priorität definieren. Eine kleinere, die verwendet wird, und eine größere, die verwendet wird, falls die erste gefüllt wird.
Mit vm.swappiness können Sie außerdem steuern, wie aggressiv der Plattenaustausch erfolgt.
quelle
Wenn Sie eine 0 in vm.swappiness einfügen, bedeutet dies nicht unbedingt, dass das System nicht ausgetauscht wird. Es ist ein Parameter, um zu bestimmen, wie aggressiv die Tendenz von Kernes ist, zu tauschen, aber es schaltet Swap nicht aus.
Auch hier ist das Tauschen nicht schlecht, aber das Dreschen. Werfen Sie einen Blick auf die sysstat-Daten und das sollte einen ziemlich guten Hinweis darauf geben.
quelle