Einführung
Eine der einfachsten Möglichkeiten, die Reaktionszeit Ihres Servers zu erhöhen und sich vor Fehlern durch zu wenig Arbeitsspeicher in Anwendungen zu schützen, besteht darin, etwas Auslagerungsspeicher hinzuzufügen. In diesem Handbuch wird beschrieben, wie Sie eine Auslagerungsdatei zu einem Ubuntu 16.04-Server hinzufügen.
Warnung
Was ist Swap?
-
Swap * ist ein Bereich auf einer Festplatte, in dem das Betriebssystem vorübergehend Daten speichern kann, die sich nicht mehr im RAM befinden. Grundsätzlich können Sie auf diese Weise die Menge an Informationen erhöhen, die Ihr Server mit einigen Einschränkungen im Arbeitsspeicher behalten kann. Der Auslagerungsspeicherplatz auf der Festplatte wird hauptsächlich verwendet, wenn im RAM nicht mehr genügend Speicherplatz für die verwendeten Anwendungsdaten vorhanden ist.
Die auf die Festplatte geschriebenen Informationen sind erheblich langsamer als die im RAM gespeicherten Informationen. Das Betriebssystem zieht es jedoch vor, weiterhin Anwendungsdaten im Arbeitsspeicher auszuführen und Swap für die älteren Daten zu verwenden. Insgesamt kann das Zurückgreifen auf Swap-Speicher, wenn der Arbeitsspeicher Ihres Systems erschöpft ist, ein gutes Sicherheitsnetz gegen Ausnahmen aufgrund von Speichermangel auf Systemen mit verfügbarem Nicht-SSD-Speicher sein.
Überprüfen Sie das System auf Swap-Informationen
Bevor wir beginnen, können wir prüfen, ob auf dem System bereits Swap-Speicher verfügbar ist. Es ist möglich, mehrere Auslagerungsdateien oder Auslagerungspartitionen zu haben, aber im Allgemeinen sollte eine ausreichend sein.
Wir können sehen, ob das System einen konfigurierten Swap hat, indem wir Folgendes eingeben:
sudo swapon --show
Wenn Sie keine Ausgabe zurückerhalten, bedeutet dies, dass auf Ihrem System derzeit kein Auslagerungsspeicher verfügbar ist.
Sie können überprüfen, ob es keinen aktiven Swap gibt, indem Sie das Dienstprogramm + free +
verwenden:
free -h
Output total used free shared buff/cache available
Mem: 488M 36M 104M 652K 348M 426M
Wie Sie in der Zeile „Swap“ der Ausgabe sehen können, ist auf dem System kein Swap aktiv.
Überprüfen Sie den verfügbaren Speicherplatz auf der Festplattenpartition
Die gebräuchlichste Methode zum Zuweisen von Speicherplatz für den Austausch ist die Verwendung einer separaten Partition, die für die Aufgabe vorgesehen ist. Das Ändern des Partitionsschemas ist jedoch nicht immer möglich. Genauso einfach können wir eine Auslagerungsdatei erstellen, die sich auf einer vorhandenen Partition befindet.
Bevor wir dies tun, sollten wir die aktuelle Datenträgerverwendung überprüfen, indem wir Folgendes eingeben:
df -h
OutputFilesystem Size Used Avail Use% Mounted on
udev 238M 0 238M 0% /dev
tmpfs 49M 624K 49M 2% /run
tmpfs 245M 0 245M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 245M 0 245M 0% /sys/fs/cgroup
tmpfs 49M 0 49M 0% /run/user/1001
Das Gerät unter "+ / dev +" ist in diesem Fall unsere Festplatte. In diesem Beispiel steht ausreichend Speicherplatz zur Verfügung (nur 1.1G werden verwendet). Ihre Nutzung wird wahrscheinlich anders sein.
Obwohl es viele Meinungen über die angemessene Größe eines Swap Space gibt, hängt dies wirklich von Ihren persönlichen Vorlieben und Ihren Anwendungsanforderungen ab. Im Allgemeinen ist eine Menge gleich oder doppelt so viel RAM auf Ihrem System ein guter Ausgangspunkt. Eine andere gute Faustregel ist, dass alles über 4 GB Swap wahrscheinlich unnötig ist, wenn Sie es nur als RAM-Fallback verwenden.
Erstellen Sie eine Auslagerungsdatei
Nachdem wir den verfügbaren Festplattenspeicherplatz ermittelt haben, können wir eine Auslagerungsdatei in unserem Dateisystem erstellen. Wir werden eine Datei mit der Swap-Größe, die wir wollen, mit dem Namen "+ swapfile +" in unserem Root-Verzeichnis (/) erstellen.
Die beste Art, eine Auslagerungsdatei zu erstellen, ist das Programm + fallocate +
. Dieser Befehl erstellt sofort eine Datei mit einer vorab zugewiesenen Größe.
Da der Server in unserem Beispiel über 512 MB RAM verfügt, erstellen wir in diesem Handbuch eine 1-Gigabyte-Datei. Passen Sie dies an die Bedürfnisse Ihres eigenen Servers an:
sudo fallocate -l /swapfile
Wir können überprüfen, ob die richtige Menge an Speicherplatz reserviert wurde, indem wir Folgendes eingeben:
ls -lh /swapfile
-rw-r--r-- 1 root root 1.0G Apr 25 11:14 /swapfile
Unsere Datei wurde mit der richtigen Menge an Speicherplatz erstellt.
Aktivieren der Auslagerungsdatei
Jetzt, da wir eine Datei mit der richtigen Größe zur Verfügung haben, müssen wir diese tatsächlich in Swap Space umwandeln.
Zuerst müssen wir die Berechtigungen der Datei sperren, damit nur die Benutzer mit den Rechten "+ root +" den Inhalt lesen können. Dies verhindert, dass normale Benutzer auf die Datei zugreifen können, was erhebliche Sicherheitsrisiken mit sich bringen würde.
Machen Sie die Datei nur für "+ root +" zugänglich, indem Sie Folgendes eingeben:
sudo chmod 600 /swapfile
Überprüfen Sie die Berechtigungsänderung, indem Sie Folgendes eingeben:
ls -lh /swapfile
Output 1 root root 1.0G Apr 25 11:14 /swapfile
Wie Sie sehen, sind die Lese- und Schreibflags nur für den Root-Benutzer aktiviert.
Wir können die Datei jetzt als Auslagerungsspeicher markieren, indem wir Folgendes eingeben:
sudo mkswap /swapfile
OutputSetting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=6e965805-2ab9-450f-aed6-577e74089dbf
Nach dem Markieren der Datei können wir die Auslagerungsdatei aktivieren, damit unser System sie verwenden kann:
sudo swapon /swapfile
Wir können überprüfen, ob der Swap verfügbar ist, indem wir Folgendes eingeben:
sudo swapon --show
OutputNAME TYPE SIZE USED PRIO
/swapfile file 1024M 0B -1
Wir können die Ausgabe des Dienstprogramms "+ free +" erneut überprüfen, um unsere Ergebnisse zu bestätigen:
free -h
Output total used free shared buff/cache available
Mem: 488M 37M 96M 652K 354M 425M
Unser Swap wurde erfolgreich eingerichtet und wird von unserem Betriebssystem nach Bedarf verwendet.
Machen Sie die Auslagerungsdatei dauerhaft
Unsere letzten Änderungen haben die Auslagerungsdatei für die aktuelle Sitzung aktiviert. Wenn wir jedoch neu starten, behält der Server die Swap-Einstellungen nicht automatisch bei. Wir können dies ändern, indem wir die Auslagerungsdatei zu Ihrer "+ / etc / fstab" -Datei hinzufügen.
Sichern Sie die Datei + / etc / fstab +
, falls etwas schief geht:
sudo cp /etc/fstab /etc/fstab.bak
Sie können die Informationen zur Auslagerungsdatei an das Ende Ihrer + / etc / fstab +
- Datei anfügen, indem Sie Folgendes eingeben:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Ändern Sie Ihre Swap-Einstellungen
Sie können einige Optionen konfigurieren, die sich auf die Leistung Ihres Systems auswirken, wenn Sie mit Swap arbeiten.
Anpassen der Swappiness-Eigenschaft
Der Parameter "+ swappiness +" konfiguriert, wie oft Ihr System Daten aus dem RAM in den Auslagerungsbereich auslagert. Dies ist ein Wert zwischen 0 und 100, der einen Prozentsatz darstellt.
Bei Werten nahe Null tauscht der Kernel nur dann Daten auf die Festplatte aus, wenn dies unbedingt erforderlich ist. Denken Sie daran, dass Interaktionen mit der Auslagerungsdatei insofern „teuer“ sind, als sie viel länger dauern als Interaktionen mit dem Arbeitsspeicher und zu einer erheblichen Verringerung der Leistung führen können. Wenn Sie dem System mitteilen, dass es sich nicht auf den Swap verlassen soll, wird Ihr System im Allgemeinen schneller.
Bei Werten, die näher an 100 liegen, wird versucht, mehr Daten in den Swap zu verschieben, um mehr RAM-Speicherplatz freizuhalten. Abhängig vom Speicherprofil Ihrer Anwendung oder davon, wofür Sie Ihren Server verwenden, ist dies in einigen Fällen möglicherweise besser.
Wir können den aktuellen Swappiness-Wert sehen, indem wir Folgendes eingeben:
cat /proc/sys/vm/swappiness
Output60
Für einen Desktop ist eine Swap-Einstellung von 60 kein schlechter Wert. Für einen Server möchten Sie ihn möglicherweise näher an 0 heranrücken.
Wir können die Swap-Funktion mit dem Befehl + sysctl +
auf einen anderen Wert setzen.
Um zum Beispiel die Austauschbarkeit auf 10 zu setzen, könnten wir Folgendes eingeben:
sudo sysctl vm.swappiness=10
Outputvm.swappiness = 10
Diese Einstellung bleibt bis zum nächsten Neustart erhalten. Wir können diesen Wert beim Neustart automatisch setzen, indem wir die Zeile zu unserer + / etc / sysctl.conf +
Datei hinzufügen:
sudo nano /etc/sysctl.conf
Unten können Sie Folgendes hinzufügen:
/etc/sysctl.conf
vm.swappiness=10
Speichern und schließen Sie die Datei, wenn Sie fertig sind.
Anpassen der Cache-Druckeinstellung
Ein weiterer verwandter Wert, den Sie möglicherweise ändern möchten, ist "+ vfs_cache_pressure +". Mit dieser Einstellung wird konfiguriert, wie viel das System auswählen wird, um Inode- und Dentry-Informationen über andere Daten zwischenzuspeichern.
Grundsätzlich handelt es sich hierbei um Zugangsdaten zum Dateisystem. Das Nachschlagen ist in der Regel sehr kostspielig und wird häufig angefordert. Daher ist es eine hervorragende Sache, wenn Ihr System zwischengespeichert wird. Sie können den aktuellen Wert anzeigen, indem Sie das + proc +
- Dateisystem erneut abfragen:
cat /proc/sys/vm/vfs_cache_pressure
Output100
In der aktuellen Konfiguration entfernt unser System die Inode-Informationen zu schnell aus dem Cache. Wir können dies auf eine konservativere Einstellung wie 50 setzen, indem wir Folgendes eingeben:
sudo sysctl vm.vfs_cache_pressure=50
Outputvm.vfs_cache_pressure = 50
Auch dies gilt nur für unsere aktuelle Sitzung. Das können wir ändern, indem wir es unserer Konfigurationsdatei hinzufügen, wie wir es mit unserer Einstellung swappiness gemacht haben:
sudo nano /etc/sysctl.conf
Fügen Sie unten die Zeile hinzu, die Ihren neuen Wert angibt:
/etc/sysctl.conf
vm.vfs_cache_pressure=50
Speichern und schließen Sie die Datei, wenn Sie fertig sind.
Fazit
Wenn Sie die Schritte in diesem Handbuch befolgen, haben Sie in Fällen, in denen es ansonsten zu Ausnahmen wegen unzureichendem Speicherplatz kommen würde, etwas Luft zum Atmen. Swap Space kann unglaublich nützlich sein, um einige dieser häufigen Probleme zu vermeiden.
Wenn bei Ihnen OOM-Fehler (zu wenig Arbeitsspeicher) auftreten oder Sie feststellen, dass Ihr System die von Ihnen benötigten Anwendungen nicht verwenden kann, ist es die beste Lösung, Ihre Anwendungskonfigurationen zu optimieren oder Ihren Server zu aktualisieren.