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


14

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!

Antworten:


14

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

Haben Sie immer einen Swap-Platz.

Ich habe einmal versucht, einen Produktionsserver ohne Swap zu betreiben, und ungefähr eine Woche später, nach einem Wordpress-Update, begann PHP, weit mehr RAM zu verbrauchen, als wir vorgesehen hatten. Wenn Ihnen der Arbeitsspeicher ausgeht und Sie Swap aktiviert haben, verlangsamen sich die Vorgänge (manchmal sehr, manchmal ein bisschen, je nachdem, was dort hineingeschoben wird), aber Sie können sich anmelden, das Problem finden und versuchen, es zu beheben es.

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

In meiner Welt ist gebrochen viel schlimmer als langsam.

Wenn Sie feststellen, dass Ihr System ständig große Teile des Austauschs verwendet ( einige werden sehr oft verwendet , um alte zwischengespeicherte Daten zu entfernen), haben Sie natürlich ein Problem ("RAM bitte einfügen"), aber Sie haben es als ein sicherheitsnetz wird auf jeden fall empfohlen.


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. Das kostet aber 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 einem herkömmlichen E-Commerce-System können Benutzer, 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 niedergeschlagen = wütend. Auch wenn Sie jeweils nur eine Minute lang ausfallen und ein Benutzer mehrmals 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 meisten Menschen ist es nicht die Lösung, nur den Stecker zu ziehen und 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.


Gleiche Erfahrungen hier, irgendwie ... es war ein Fehler in meiner Seite, keine absichtliche Entscheidung. Ein Server ohne Swap ist eine Hölle zum Reparieren, besonders wenn er sich entscheidet, sshd zu töten.
Javier Rivera

Ich habe ungefähr 16 GB RAM, die Hälfte davon ist für schnelle E / A-Vorgänge zwischengespeichert, der Rest ist für LAMP, der Austausch ist immer kostenlos, oder einige Male sind einige Megabytes vorhanden, aber ich denke, es ist immer aus ...
Arman

3
In der Welt erfolgreicher Websites ist es schlimmer als kaputt, nicht zu reagieren. Benutzer werden tatsächlich einen SCHNELLEN Fehler zu schätzen wissen (der JavaScript-Frontend-Code sollte übrigens ordnungsgemäß gehandhabt werden), aber sie werden Sie dafür hassen, dass Sie langsam sind. Schluss mit dem Tausch, es verzögert nur das Unvermeidliche. -1
SpamapS

1
@Oli: Das Ausführen von N + 1 kostet nicht länger Megabucks oder sogar viel Geld. Tatsächlich braucht es kaum spezielle Fähigkeiten. Es ist unvermeidlich, dass ein Server aus einer Reihe von Gründen ausfällt, und es ist nicht so schwer zu verhindern, dass dies kein Problem darstellt. Wenn Sie einen eigenständigen LAMP-Server haben, der alles erledigt, was kostet dann mehr? Einrichten von zwei weiteren und eines Lastenausgleichs (auf EC2 mit t1.micros und EBS-Snapshots kann dies SEHR billig sein) oder ist Ihre Site an ihrem größten Tag ungewöhnlich langsam? Überprüfen Sie die Daten von Google ... Ich denke, es ist klar bit.ly/hB1AD1
SpamapS

1
Tolle Antwort, die reale Serverfälle abdeckt. Das Hinzufügen redundanter Hardware, LB, Überwachung, RAM-Caches usw. ist unglaublich wichtig, und Sie haben Zeit, sie einzurichten und zu debuggen, wenn Sie nicht zu viel Zeit haben, weil Sie den Swap-Speicherplatz verbilligt haben.
ImaginaryRobots

4

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 alles mit einer lokalen langsamen Festplatte macht, wird schnell zu etwas Schlimmerem als einem Ausfallzustand. Die Antwortzeiten steigen auf das 100-fache ihres normalen Niveaus, 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 Speicherbeschränkungen und überwachen Sie Ihre Protokolle auf Fehler. Hier ist ein Trick: Setzen Sie das Limit auf Ihrem Entwickler-Server niedriger als in der Produktion. Wenn Sie mod_php unter Apache verwenden, setzen Sie MaxRequestsPerChild auf ein paar Tausend, damit httpd sterben, 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.


1
Vielen Dank für Ihre Erfahrung. Ich rechnete mit ähnlichen Problemen, als ssh Inf einnahm. Ich habe die Prozesse nur gezwungen, über begrenzten Arbeitsspeicher zu verfügen, sodass ich ssh zum Laufen bringen und fehlerhafte Skripte reparieren konnte.
Arman

Eine der interessantesten Diskussionen über Swap Space in der Produktion, die ich im Internet gesehen habe. (der ganze Thread, Pro & Contra)
DPB

3

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


Danke für die Erklärung. Wenn man ein fehlerhaftes Skript hat, dann stürzt man auf jeden Fall den Server ab, die Systemgrenzen sollten Ihre Skripte kontrollieren, nicht wahr?
Arman,

aneeshep, wenn Sie während des starken Verkehrs tauschen, wird Ihr System 100x langsamer sein, als es normalerweise sein sollte. Das ist im Allgemeinen nicht akzeptabel.
SpamapS

2

Durch die Verwendung von Swap erhalten Sie einen zusätzlichen Schutz gegen Serverinstabilität. Es kann durchaus vorkommen, dass der Arbeitsspeicher knapp wird und auf Servern ohne Auslagerungen ein Absturz zu erwarten ist.

Ich bin jetzt wahrscheinlich in der Minderheit, wenn ich sage, es macht immer noch Sinn, 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! :-)


0

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 bzw. entsprechende Maßnahmen zu ergreifen. bevor es wirklich schief geht .

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="your@email.addr"

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.