GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Kann ich einen Oracle-Server ohne Swap betreiben?

Das Deaktivieren von Swap ist eine gute Idee, wenn

  • Ihre Software kann elegant mit Speichermangel umgehen oder sich selbst einschränken, um OOM-Situationen zu vermeiden
  • Eine konsistente Leistung ist entscheidend (wenn Ihr System wechselt, erhöht sich die Latenz, was schlimm genug sein kann, um es für viele Anwendungen effektiv unbrauchbar zu machen)

Bei Datenbanken kommt so etwas oft vor. Ich sehe es eher bei NoSQL-Datenbanken, aber relationale Datenbanken können unter der gleichen Herausforderung leiden.

Es gibt nichts im Betriebssystem, das einen Swap erfordert. Linux geht damit ziemlich elegant um, indem es den letzten Prozess beendet, der nach Speicher gefragt hat. Sie möchten nicht an diesen Punkt gelangen, stellen Sie also sicher, dass Sie Oracle so einstellen, dass es nur ~ 90 % des Speichers verwendet, damit etwas für die System-Daemons und den Spielraum für Fehler übrig bleibt. "Freier" Speicher wird auch zum Puffern von Festplatten-E/A verwendet, was einen enormen Leistungsgewinn darstellt, sodass der Versuch, mehr Speicher durch die Datenbank selbst zu verbrauchen, letztendlich die Gesamtsystemleistung so stark verlangsamen wird, dass es kontraproduktiv ist.

Selbst bei Systemen, die nur einen Bruchteil des Arbeitsspeichers haben, würde ich bei der Frage, ob es sich bei der Anwendung um eine Datenbank oder einen Cache oder ein ähnliches System handelt, an dieser Stelle standardmäßig auf keinen Swap setzen.

Behörden

Damit Sie sich nicht nur auf mein Wort verlassen:

Kassandra

Datastax erklärt für Cassandra:

Sie müssen Swap vollständig deaktivieren. Andernfalls kann die Leistung erheblich beeinträchtigt werden. Da Cassandra über mehrere Replikate und transparentes Failover verfügt, ist es vorzuziehen, dass ein Replikat sofort beendet wird, wenn der Arbeitsspeicher niedrig ist, anstatt in den Austausch zu gehen. Dadurch kann der Datenverkehr sofort auf ein funktionierendes Replikat umgeleitet werden, anstatt weiterhin auf das Replikat zu treffen, das aufgrund des Austauschs eine hohe Latenz aufweist. Wenn Ihr System über viel DRAM verfügt, verringert das Austauschen die Leistung dennoch erheblich, da das Betriebssystem ausführbaren Code auslagert, sodass mehr DRAM zum Zwischenspeichern von Datenträgern verfügbar ist.

Riak

Basho erklärt Riak, dass Sie:

Idealerweise sollten Sie Swap deaktivieren, um sicherzustellen, dass die Prozessseiten von Riak nicht ausgetauscht werden. Durch das Deaktivieren von Swap kann Riak in Situationen abstürzen, in denen ihm der Speicher ausgeht. Dies hinterlässt eine Crash-Dump-Datei mit dem Namen erl_crash.dump , im /var/log/riak Verzeichnis, das verwendet werden kann, um die Ursache der Speicherbelegung zu ermitteln.

mysql

Percona sitzt auf dem Zaun und liefert nützliche Vorbehalte für beide Seiten der Frage. MariaDB ist mit der Deaktivierung von Swap nicht einverstanden:

Während einige Swaps vollständig deaktivieren und Sie auf jeden Fall vermeiden möchten, dass Datenbankprozesse ihn verwenden, kann es ratsam sein, etwas Swap-Speicherplatz zu lassen, damit der Kernel zumindest ordnungsgemäß umkippen kann, falls eine Spitze auftritt. Wenn Sie einen Notfall-Swap zur Verfügung haben, haben Sie zumindest einen gewissen Spielraum, um alle außer Kontrolle geratenen Prozesse zu beenden.

Serverfehler

Eine gut erhaltene Antwort hier beinhaltet:

Ich persönlich finde ein ausgelagertes System schlimmer als ein abgestürztes System. Ein abgestürztes System würde viel früher die Übernahme durch einen Standby-Backup-Server auslösen. Und in einem Aktiv-Aktiv-Setup (oder Load-Balancing-Setup) würde ein abgestürztes System viel früher aus der Rotation genommen. Wieder ein Sieg für das No-Swap-System.

Diese Antwort hat heute 22 Upvotes und ist 4 Jahre alt. Sie können dort auch einige andere Antworten sehen, die den Wert von Swap preisen, aber es gibt keinen Hinweis darauf, dass sie Datenbanken ausführen. Sie haben auch nicht so viele Upvotes. :)

Tintenfisch

Obwohl sie nicht ausdrücklich empfehlen, Swap zu deaktivieren, sagen die Squid-Jungs:

Squid neigt dazu, ein bisschen wie ein Gedächtnisfresser zu sein. Es verwendet Speicher für viele verschiedene Dinge, von denen einige leichter zu kontrollieren sind als andere. Die Speichernutzung ist wichtig, denn wenn die Größe des Squid-Prozesses die RAM-Kapazität Ihres Systems überschreitet, müssen einige Teile des Prozesses vorübergehend auf die Festplatte ausgelagert werden. Das Auslagern kann auch passieren, wenn Sie andere speicherhungrige Anwendungen auf demselben System ausführen. Das Austauschen führt dazu, dass die Leistung von Squid sehr schnell abnimmt.

Das soll Ihrer Datenbank nicht passieren.

redis

Während Redis offiziell Swap empfiehlt, kaufen die Benutzer es nicht:

Deaktivieren Sie zuerst Swap - Redis und Swap mischen sich nicht einfach und dies kann sicherlich zu Langsamkeit führen.

Hadoop

Wie in dieser Antwort mit den meisten Stimmen in der Hortonworks-Community zu sehen:

Für Slave/Worker/Datenhosts die nur verteilte Dienste haben, können Sie wahrscheinlich Swap deaktivieren. Bei verteilten Diensten ist es vorzuziehen, den Prozess/Host zu beenden, anstatt ihn auszutauschen. Das Beenden dieses Prozesses oder Hosts sollte die Verfügbarkeit des Clusters nicht beeinträchtigen. Anders gesagt:Sie wollen "schnell scheitern", nicht "langsam abbauen".

[....]

Für Meister , Swap ist auch oft deaktiviert, obwohl es keine feste Regel von Hortonworks ist, und ich gehe davon aus, dass es einige Diskussionen / Meinungsverschiedenheiten geben wird. Master können ungefähr so ​​behandelt werden, wie Sie Master in anderen Nicht-Hadoop-Umgebungen behandeln würden.

Beim Deaktivieren von Swap auf Mastern besteht die Befürchtung, dass ein OOM-Ereignis (nicht genügend Arbeitsspeicher) die Verfügbarkeit des Clusters beeinträchtigen könnte. Aber das passiert auch mit Swap konfiguriert, es dauert nur etwas länger. Eine gute Vorgehensweise für Administratoren/Operatoren wäre es, die RAM-Verfügbarkeit zu überwachen und dann alle Probleme zu beheben, bevor der Speicher knapp wird. Dadurch wird die Verfügbarkeit aufrechterhalten, ohne die Leistung zu beeinträchtigen. Dann ist kein Austausch erforderlich.

Ich mag das, weil es um eine Java-App geht, aber es kommt zu vielen der gleichen Schlussfolgerungen, die oben über Datenbanken erwähnt wurden. Außerdem wird Überwachung erwähnt Dies ist sehr hilfreich bei der Abstimmung von Hochleistungsanwendungen. Wenn Sie keine Zahlen zum Vergleichen haben, basiert alles auf Gefühlen, die schwerer zu vergleichen sind. Erstellen Sie Diagramme für jede messbare Metrik – Latenz und Durchsatz auf Anwendungsebene bis hin zu CPU-, Festplatten-, Arbeitsspeicher- und Netzwerkdiagrammen. Diese liefern den Großteil der echten Daten, auf deren Grundlage Sie Entscheidungen treffen müssen.


Linux
  1. Wie kann ich mein Node-JS-Skript automatisch mit dem Scheduler auf dem Server ausführen?

  2. Ist es möglich, grafische Anwendungen wie Firefox auszuführen, ohne eine Desktop-Umgebung zu installieren?

  3. Führen Sie ifconfig ohne sudo aus

  4. So booten Sie ein Linux-System ohne grafischen Server

  5. Ist es möglich, reines GNU auszuführen?

Ssh – Benötigen Sie ein Tty, um Sudo auszuführen, wenn ich Sudo ohne Passwort ausführen kann?

Befehle nach Systeminaktivität planen?

Graylog-Überwachungsserver unter Ubuntu Linux für Überwachungsserver/-dienste

Ruhezustand ohne Swap aktiviert

Wie kann ich herausfinden, ob mein Server über eine Art IPMI verfügt?

Kann ich System-Mail so einrichten, dass ein externer SMTP-Server verwendet wird?