it-swarm.com.de

Benötigen wir eine Swap-Partition auf einem LAMP-Server?

Müssen wir die Partition auf dem Ubuntu-Server mit LAMP tauschen? Ich glaube, ich brauche es nicht, aber es ist besser zu wissen, ob es kein unvorhergesehenes Verhalten hervorruft.
Eigentlich waren meine Gedanken:

  • Der Server wird niemals in den Ruhezustand versetzt
  • Wenn es sich um einen Tausch handelt, muss man über Loadbalancing/Traffic Shaping usw. nachdenken.

Habe ich recht, kann ich den Swap für den Produktionsserver ausschalten?

Vielen Dank!

13
Arman

Habe ich recht, kann ich den Swap für den Produktionsserver ausschalten?

Haben Sie immer einen Swap-Platz.

Ich habe einmal und ungefähr eine Woche später versucht, einen Produktionsserver ohne Swap zu betreiben. Nach einem Wordpress Update hat PHP weitaus mehr RAM gegessen, als wir berücksichtigt hatten . Wenn Ihnen RAM ausgeht und Sie Swap aktiviert haben, werden die Dinge langsamer (manchmal sehr, manchmal ein bisschen, je nachdem, was dort hineingeschoben wird), aber Sie können sich anmelden und finden das Problem und versuchen, es zu beheben.

Wenn Ihnen RAM ausgeht und Sie keinen Swap haben, sterben die Prozesse, die Dinge blockieren und die meiste Zeit ist Ihre einzige Option ein Neustart. Aber bis Sie diesen Neustart durchführen, werden die Dinge wahrscheinlich zusammenbrechen.

In meiner Welt ist gebrochen viel schlimmer als langsam.

Natürlich, wenn Sie feststellen, dass Ihr System ständig große Teile von Swap verwendet (es wird sehr oft einige verwenden, nur um alte zwischengespeicherte Sachen zu entfernen) Sie haben offensichtlich ein Problem ("Bitte RAM einfügen"), aber es wird definitiv empfohlen, es als Sicherheitsnetz zu haben.


Als Antwort auf den Kommentar von SpamapS:

In der Welt der "erfolgreichen Websites" gibt es Hot-Failover, Load-Balancing und andere Tools, mit denen ein Computer explodieren kann und keine Auswirkungen auf den Rest der Website hat. Aber das kostet viel Geld. Redundante Hardware ist für die meisten Sites nicht wirtschaftlich, selbst wenn sie Geld einbringen.

Ich stimme Ihrem Kommentar zur Verfügbarkeit überhaupt nicht zu. In einer herkömmlichen E-Commerce-Konfiguration können Personen, die Ihre Website nicht sehen können, keine Produkte bei Ihnen kaufen . = Dies ist nicht nur E-Commerce, alle Online-Handelsinteressen nehmen viel mehr Schaden, wenn Sie für irgendeine Art von Periode nicht verfügbar sind. Ich weiß, weil ich Websites und Services für Unternehmen hoste und meine eigenen Websites betreibe. Langsam = mürrisch, aber runter = wütend. Auch wenn Sie jeweils nur eine Minute lang ausfallen und ein Benutzer mehr als ein paar Mal die Meldung "Wartungsbedürftig" sieht, geht er davon aus, dass Sie die Website nicht auf dem neuesten Stand halten können.

Ein langsamer Server ist weniger als ideal, aber Swap kann nicht immer ausgeführt werden. Es ist ein letzter Ausweg, um zuzulassen, dass Dinge weiterlaufen, während Sie sie reparieren.

Sie gehen auch davon aus, dass nur ein Dienst auf dem Computer ausgeführt wird. Auch dies könnte der Fall sein, wenn Sie Megabucks haben, um alles aufzuteilen, aber in der realen Welt werden die Dinge zusammengewürfelt. Mehrere Websites, SSH-Daemons, FTP-Server, E-Mail-Server usw. Ein in Swap ausgetretener Prozess hat möglicherweise nicht einmal Auswirkungen auf einen anderen Dienst. Ohne Swap hat alles die gleiche Chance auf sofortige, zufällige Beendigung. Sie haben keine Kontrolle darüber.

Natürlich ist Tausch nicht die einzige Antwort. Sie müssen überwacht werden, um benachrichtigt zu werden, wenn Sie nicht mehr im RAM sind, aber für die Mehrheit der Benutzer ist es nicht die Lösung, nur den Netzstecker zu ziehen und den Computer neu zu starten. Ich bin mir sicher, dass dies für jede multinationale Website funktioniert, für die Sie verantwortlich sind, aber für uns Sterbliche (die den größten Teil des Internets ausmachen), das ist kommerzieller Selbstmord.

14
Oli

Ich muss mit Swap auf Produktionsservern nicht einverstanden sein.

Nach meiner Erfahrung macht der Austausch von Rotationsplatten Ihr System weniger vorhersehbar und anfälliger für den Ausfall des gesamten Systems. Ein beliebter Server mit hoher Auslastung, der etwas mit einer lokalen langsamen Festplatte zu tun hat, wird schnell zu etwas Schlimmerem als einem Ausfallzustand. Die Antwortzeiten werden auf das 100-fache ihres normalen Niveaus ansteigen, und einfache Dinge wie das Anmelden über die Konsole oder ssh können Minuten dauern.

SSD-Tausch ist ein Sonderfall und würde zumindest die Suchzeitverzögerung beseitigen, die normalerweise das System umbringt. Da die Schreibvorgänge jedoch immer noch langsam sind, müssen Sie immer noch lange warten, bis Sie sich von einem außer Kontrolle geratenen Prozess erholt haben.

Ohne Swap bricht Ihr LAMP-Server einfach Prozesse ab, um RAM freizugeben. Eine ordnungsgemäße Überwachung sollte Sie darauf aufmerksam machen und Server aus der Produktion entfernen, wenn kritische Prozesse beendet werden. Der schlimmste Fall ist, dass alle Anmeldemethoden deaktiviert sind und Sie einen Hard-Reset/Power-Cycle durchführen müssen. Dieser schlimmste Fall ist bei einer außer Kontrolle geratenen Wechselmaschine immer noch genauso wahrscheinlich, aber weitaus schwerer zu erkennen.

Wenn Sie PHP verwenden, aktivieren Sie die Speicherbegrenzung und überwachen Sie Ihre Protokolle auf Fehler. Hier ist ein Trick, setzen Sie das Limit niedriger auf Ihrem Entwickler-Server als in der Produktion. Wenn Sie mod_php unter Apache verwenden, setzen Sie MaxRequestsPerChild auf ein paar Tausend, damit httpd abstirbt, bevor sie mit der Zeit zu groß werden. Überwachen Sie vor allem die Speichernutzung! Oft schleicht sich der Arbeitsspeicher im Laufe der Zeit zusammen und Sie müssen nur regelmäßig einen undichten Dienst neu starten, während Sie das Problem debuggen.

4
SpamapS

Swap Space wird verwendet, wenn Ihr System feststellt, dass für aktive Prozesse physischer Speicher benötigt wird und nicht genügend physischer Speicher zur Verfügung steht. Wenn das System mehr Speicherressourcen oder Speicherplatz benötigt, werden inaktive Seiten im physischen Speicher in den Auslagerungsspeicher verschoben, um diesen physischen Speicher für andere Zwecke freizugeben.

Diese Situation tritt im Server häufig auf.

ein). Ein nicht optimiertes Skript kann viel Speicher beanspruchen
b). Skripte wie Backup verbrauchen immer sehr viel Speicher
c). dichter Verkehr

Es ist also eine gute Praxis, etwas Swap-Platz zu haben.

Weitere Details: https://help.ubuntu.com/community/SwapFaq

3
aneeshep

Durch die Verwendung von Swap erhalten Sie einen zusätzlichen Schutz gegen Serverinstabilität. Es kann durchaus vorkommen, dass RAM knapp wird und sich auf einem Server ohne Swap befindet, was zu einem Absturz führen kann.

Ich bin jetzt wahrscheinlich in der Minderheit, wenn ich sage, dass es immer noch Sinn macht, wie früher empfohlen, doppelt so viel Swap zu haben, wie Sie über Hauptspeicher verfügen. Auch auf einem System mit 96 GB RAM.

Es kostet nicht viel und wenn Sie es eines Tages brauchen, werden Sie froh sein, dass Sie es haben. Der Grund für die Aktivierung des Austauschs ist nur eine sehr einfache Kosten-Nutzen-Analyse. Tu es! :-)

2
Stefano Palazzo

Ich möchte Oli für die schöne - ich weiß alt - Antwort danken. Ich finde, Partitionierung ist ein immer grünes Thema! Ich stimme voll und ganz der Zeile von Olis Post zu und ich möchte dieses - natürlich verbesserungsfähige - Skript teilen, das ich verwende, um die Auslagerungsnutzung meiner Server zu überwachen.

Ich konfiguriere Server und Dienste immer so, dass sie überhaupt nicht getauscht werden können. Wenn es soweit ist, stellen Sie sicher, dass entweder etwas schief geht oder bestenfalls etwas über Ihre ursprünglichen Pläne hinausgeht.

Ich schreibe dieses Skript jede halbe Stunde in der Produktionsumgebung. Es wird mir eine Benachrichtigung gesendet, wenn Swap usage! = 0k ist. Ich werde in der Lage sein, das Problem in den meisten Fällen umgehend zu untersuchen/Maßnahmen zu ergreifen. vorher Die Dinge werden wirklich falsch.

Erwartet, dass Sie Folgendes haben: bash, top, echo, awk und einen funktionierenden E-Mail-Befehl, ohne Überprüfungen durchzuführen.

Ich hoffe, das hilft.

#!/bin/bash
CURRSWAP=$(top -b -n1 |grep Swap |awk '{print $4}')
ECOMM="echo $CURRSWAP means healthy, I wont take any action."
CURRDATE=$(date)
MAILDST="[email protected]"

case $CURRSWAP in
  [0]k) $ECOMM
        exit 0
        ;;
  *)    echo -e "Server: $HOSTNAME \n Date: $CURRDATE \n Current Swap partition usage: $CURRSWAP" | mail -s "Warning from $HOSTNAME" -- $MAILDST
        exit 0
        ;;
esac
exit 0
0
Marco