Frage Soll ich swap für Linux-Webserver komplett ausschalten?


Kürzlich hat mir mein Freund gesagt, 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 (Cache und Puffer nicht mitgerechnet) unter Spitzenlast.

Sein Argument war, dass der Server in einer normalen Situation niemals sein gesamtes RAM benutzen wird, so dass die einzige Möglichkeit, die OutOfMemory-Situation zu treffen, einige Fehler / Ddos / etc sind. Also für den Fall, dass der Tausch aktiviert ist aus Das System wird nicht mehr genügend Arbeitsspeicher haben, was den Programmspeicher (höchstwahrscheinlich den Webserverprozess) und wahrscheinlich einige andere Prozesse zum Absturz bringen wird. Falls der Tausch aktiviert ist auf Es wird sowohl RAM als auch Swap verschlingen und schließlich zum selben Absturz führen, aber vorher wird es wichtige Prozesse wie sshd auslagern und viele Swap-Operationen durchführen, was zu einer großen Verlangsamung führt. Auf diese Weise kann es passieren, dass das System unter ddos ​​aufgrund von großen Verzögerungen in einen völlig unbenutzbaren Zustand gerät und ich wahrscheinlich nicht in der Lage bin, mich einzuloggen und den Webserver-Prozess zu beenden oder den gesamten eingehenden Verkehr abzuwehren (alle außer ssh).

Ist das richtig? Fehle ich etwas (wie die Tatsache, dass Swap-Partition in irgendeiner Weise sehr nützlich ist, selbst wenn ich genug RAM habe)? Soll ich es ausschalten?


21
2018-01-22 11:19


Ursprung


Also, alle Antworten laufen auf Aussagen hinaus, dass 1. mehr virtuelles Gedächtnis bedingungslos besser ist als weniger, und 2. es muss etwas Austausch möglich sein, weil es gut ist, von denen beide nicht gut begründet sind. - NekojiruSou
Es ist irreführend, zu denken, dass der Tausch ausschließlich für die 'Reserve'-Erinnerung gedacht ist. Tauschen ist für einen Platz gedacht, um ungenutzten Speicher zu legen (so können Sie Ihren tatsächlichen Speicher effizienter nutzen). Sie sollten immer tauschen. Wenn Sie nicht genügend Arbeitsspeicher haben, dann haben Sie keine Zeit mehr. Dies ist ein Problem des Kapazitätsmanagements - nicht die Tendenz zum Tausch. Ich habe eine ziemlich lange Antwort serverfault.com/a/332205/75118 das versucht, die Intentionen des virtuellen Speichers besser zu erklären. - Matthew Ife


Antworten:


Ich würde sagen, es hängt von Ihrem Anwendungsfall ab und der Rest der Antworten hat das ziemlich gut abgedeckt. 4G Swap sind schließlich eine billige Möglichkeit, etwas Sicherheit zu kaufen. Und ich fühle, dass diese Billigkeit das ist, was die Leute dazu bringt, es nicht abstellen zu wollen.

Aber lassen Sie mich mit einer rhetorischen Frage antworten. Wenn Geld kein Problem ist, und Sie haben die Wahl zwischen zwei Systemen - eines mit 12G RAM und 4G Swap und ein anderes mit 16G RAM und ohne Swap - welche würden Sie wählen? Leider würden die meisten Leute immer noch antworten, dass sie 16G RAM wählen würden und immer noch Fügen Sie 4G Swap hinzu, was meinen Punkt vermisst.

Und noch etwas, ich persönlich finde ein schwachsinniges System schlimmer als ein abgestürztes System. Ein abgestürztes System würde einen Standby-Backup-Server veranlassen, viel früher zu übernehmen. Und in einem Active-Active (oder Load-Balanced Setup) würde ein abgestürztes System viel früher aus der Rotation genommen werden. Ein Gewinn für das No-Swap-System wieder.


26
2018-06-13 10:07





Es wird NICHT empfohlen, Swap zu deaktivieren, auch wenn Sie genügend Speicher haben. Wenn Ihr Server mehr Speicher benötigt und es nicht erhalten hat, stürzt es ab. Dies kann jedoch (teilweise) verhindert werden, wenn Sie einen Swap-Bereich haben.

Ja, Ihre Serverleistung wird sich verschlechtern, wenn Sie Swap verwenden, aber zumindest wird es funktionsfähig und zugänglich sein. Dann können Sie planen, bei Bedarf mehr Speicher hinzuzufügen, wenn Ihr Server Swap verwendet.

ich fand diese Seite über Tausch reden. Schauen Sie sich den 3. Abschnitt an.

Anstatt den Swap auszuschalten, können Sie den Täuschung.


14
2018-01-22 11:25



In der Situation, die ich beschrieben habe, wird es konsumieren beide tauschen und RAM und wird auch abstürzen. Es läuft seit ein paar Monaten und es hat nie mehr als 30% Speicher verwendet. Es ist daher sehr unwahrscheinlich, dass es im normalen Betrieb so schnell zu 100% springt. Wenn also ein Prozess verrückt wird und 8 GB verbraucht, bedeutet das, dass er so viel Speicher verbraucht wie das Betriebssystem, das bedeutet alles. - Poma
@Poma, es gibt auch andere Vorteile von Swap. Außerdem können Sie dem System erlauben, länger zu leben, wenn Sie einen Swap haben. Dies liegt daran, dass der Austausch bei Verfügbarkeit von billigen HD-Laufwerken größer sein kann als der Speicher. - Khaled


Nein, das ist keine gute Idee. "Ein Prozess ist verrückt geworden" bedeutet, dass Sie proaktiv bereits angerufen haben sollten

ulimit -d 

bei oder vor der Prozess-Erstellungszeit, um ein Limit für jeden Prozessdatensegmentspeicher zu setzen - und vielleicht eine Begrenzung für die Anzahl von Threads

ulimit -T 

pro Prozess. Ulimit ist dein Freund. Bitte lesen Sie vor dem Ausschalten des Swap eine der Speicheroptimierungshilfen. Sie können Kernel-Parms auch in einige Dinge ändern, um DOS-Angriffe oder schlechte Programme zu behandeln.

Sieh es dir so an: Der gesamte Speicher auf Ihrem System ist RAM + Swap. Wenn Sie 12 GB Swap haben, reduzieren Sie die Kapazität der System-VM effektiv, indem Sie Swap deaktivieren. Schlechte Idee. Dies ist keine Debatte, wirklich, es ist einfach zu lesen, was andere Leute von früheren schlechten Erfahrungen seit Jahren gewusst haben. Es ist möglich, dass dein Freund auch etwas lesen muss.


6
2018-01-23 02:27





Wie andere bereits gesagt haben, können Sie Ihren Server effektiv mit Swap stoppen, außer wenn es absolut notwendig ist, indem Sie mit dem Parameter "Swappiness" experimentieren. Dies steuert, wie aggressiv der Kernel Speicherseiten austauscht.

Sie können sehen, wofür es momentan eingestellt ist:

cat /proc/sys/vm/swappiness

und du kannst es "live" mit (als root) bearbeiten:

# echo "10" > /proc/sys/vm/swappiness

und um es bestehen zu lassen, füge folgendes zu /etc/sysctl.conf hinzu:

vm.swappiness=10

4
2018-06-13 11:20





Eine andere gute Sache, die Sie tun können, ist mit zRAM in RAM zu wechseln. Ich denke, das ist eine großartige Idee! Für die Performance ist es, als hätte man überhaupt keinen Swap, aber verhindert auch die Abstürze, wenn das System sehr geladen ist!

Schau dir das an:

http://www.webupd8.org/2011/10/increased-performance-in-linux-with.html

Meine Erfahrung: In dieser Maschine, in der ich jetzt schreibe, deaktivierte ich den Austausch, weil ich 4 GB RAM habe (im Jahr 2009 war es viel!). Ich hatte nur ein paar Probleme, einer von ihnen öffnete versehentlich 127 Bilder gleichzeitig!

ABER .. das ist eine Workstation, und ich kann es mir leisten, neu zu starten, wenn es hängt. In einem Server ist es besser, einen Swap zu haben, und der Swap-in-RAM klingt gut für mich.


2
2018-06-13 06:44





Wie bereits ausführlich dargelegt wurde, ist dies keine gute Idee. Wenn nichts anderes, bietet swap Ihnen etwas Atempause, wenn Dinge nicht ganz normal sind. z.B. Auf einem System, das ich normalerweise nur wenige Besucher pro Tag habe, gab es eine massive Traffic-Spike, die durch eine Seite in einer Zeitschrift erwähnt wurde. Dies führte dazu, dass der Webserver den Swap-Space zum ersten Mal seit seiner Inbetriebnahme nutzte. Ohne diesen Swap-Space wären die Dinge nicht sehr gut gelaufen.


1
2018-06-13 09:45





Keine gute Idee. Sie können zwei Auslagerungsdateien mit unterschiedlicher Priorität definieren. Eine kleinere, die benutzt wird und ein größeres, das verwendet wird, wenn das erste gefüllt wird.

Auch vm.swappiness kann Ihnen dabei helfen zu kontrollieren, wie aggressiv der Plattenwechsel stattfindet.


0
2018-06-13 07:34





Wenn Sie eine 0 bis vm.swappiness einfügen, bedeutet dies nicht unbedingt, dass das System nicht vertauscht wird. Es ist ein Parameter, um zu bestimmen, wie aggressiv kerns Tendenz zum Tausch ist, aber es schaltet den Tausch nicht aus.

Auch hier ist Swapping nicht schlecht, aber Thrashing ist. Sehen Sie sich die sysstat-Daten an, und das sollte einen ziemlich guten Zeiger darauf geben.


0
2018-06-13 13:44