Swap File auf Ubuntu 14.04 bei Amazon AWS EC2 aktivieren

Swap File auf Ubuntu 14.04 bei Amazon AWS EC2 aktivieren

Wozu Linux Swapping?

Ein Linux Swap File erlaubt dem Server mehr Speicher zu verwenden, als tatsächlich eingebaut ist. Das hat Vor- und Nachteile. Festplatten (auch SSD's) eines VPS Servers sind deutlich langsamer als der RAM Speicher. Die Server Performance wird bei der permanenten Nutzung eines Swap Files einbrechen. Auf der anderen Seite kann ein Swap File extrem hilfreich sein, wenn der Server ausnahmsweise an seine Speichergrenze kommt. 

Ohne aktives Swap File führt das im schlechtesten Fall zum Crash und Serverausfall. Das ist für den SEO und den Unternehmer ein echtes Worst Case Szenario. Besucher bekommen nur eine Error 500 Fehlermeldung zu sehen. Die Besucherzahlen und Umsätze brechen ein, die Bouncerate zurück zu Google steigt sprunghaft.

Blöd ist wenn gerade auch noch AdWords Anzeigen geschaltet werden und zusätzliche Kosten anfallen. 

Besser achten wir gleich von Anfang an auf eine solche "Kleinigkeit".

Amazon EC2 Ubuntu 14.04

Beim Amazon EC2 Server Template für Ubuntu (12.04 und 14.04) ist nach der Installation noch kein Swap File aktiviert. Anfangs bemerkt man dies evtl. nicht, erst wenn mehr Prozesse auf der Machine laufen, mehrere Domains gehostet werden und Lastspitzen auf den Server kommen. Dann kann die Performance stark einbrechen.

http://aws.amazon.com

Cannot allocate memory

Tritt bei der Installation neuer Python Pakete der Fehler "Cannot allocate memory" mit folgender Fehlermeldung auf?

Error [Errno 12] Cannot allocate memory while executing command python setup.py egg_info

Das kann ebenfalls an zu wenig Speicher in Verbindung mit fehlendem Swap-File liegen.

Mit free -m überprüfen wir den vorhandenen Speicher:

$ free -m

 

Wie prüfe ich ob ein Swap File vorhanden ist

Vor dem anlegen eines Swap File's, müssen wir checken ob es bereits eines auf dem VPS Server gibt und es aktiviert ist:

sudo swapon -s

Ein leeres Ergebnis bestätigt: das Swap File fehlt.

$ sudo swapon -s
Filename Type Size Used Priority

 

Wie kann ich die File System Größe herausfinden?

Nachdem wir nun wissen, daß kein Swap File auf dem Ubuntu Linux Server vorhanden ist, prüfen wir mit den df Befehl wie viel Festplattenplatz vorhanden ist. Für das Swap File benötigen wir auf kleinen bis mittleren Servern etwa 256MB bis 512MB freien Platz auf der Festplatte /dev/xvda1 

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.9G  1.8G  5.8G  24% /
udev            288M  8.0K  288M   1% /dev
tmpfs            60M  184K   59M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            296M     0  296M   0% /run/shm

Aktuell sind 5,8GB verfügbar, genug Platz für das Swap File.

Swap File erstellen und aktivieren

Eine 256MB große Swap Datei wird per dd Kommando erstellt:

$ sudo dd if=/dev/zero of=/swapfile bs=1024 count=256k

if=/dev/zero  mit dem spezial Device "/dev/zero" besteht die Eingabe aus lauter Nullen 
of=/swapfile ist der Dateiname des Swap Files
mit bs=1024 und count=256k wird die Größe festegelgt.  

Achtung: bei fehlerhafter Verwendung von dd kann man sich das System schrotten. In den Parametern if und of dürfen auf keinen Fall irgendwelche Leerzeichen sein! Die Verwendung erfolgt wie immer auf eigene Gefahr :-)

 

Erzeugte Datei als Linux Swap Bereich vorbereiten:

$ sudo mkswap /swapfile

Die Ausgabe dazu:


Setting up swapspace version 1, size = 262140 KiB
no label, UUID=bc9ba5ac-ca06-1814-a231-be36bab3cdf8

 

Swap Datei aktivieren:

$ sudo swapon /swapfile

Das neue Swap File ist nun sichtbar in der Swap Übersicht:

$ swapon -s
Filename Type Size Used Priority
/swapfile     file 262140 0 -1

Jetzt ist das Swap File aktiv, aber nur bis zum nächsten Reboot des Servers. Für eine permanente Aktivierung öffne ich die Datei /etc/fstab:

sudo nano /etc/fstab

und füge folgende Zeile ein:

/swapfile       none    swap    sw      0       0 

Mit Swappiness auf 10 gesetzt, verhält sich das Swap File als Notfall Puffer und kann einen Servercrash wegen mangelndem Hauptspeicher verhindern.

Folgende Kommandos erledigen das:

$ echo 10 | sudo tee /proc/sys/vm/swappiness
$ echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf

 

Zuletzt noch die Rechte anpassen, damit das Swapfile nicht für jeden lesbar ist:

$ sudo chown root:root /swapfile
$ sudo chmod 0600 /swapfile 

 Berechtigung noch prüfen:

$ ls -la /swapfile 
-rw------- 1 root root 268435456 Aug 22 12:40 /swapfile

So soll das aussehen. Gut gemacht und Fertig! 

 

Warum ist standardmäßig kein Swapfile aktiviert?

Vermutlich liegt es am Design von EC2 in Verbindung mit dem EBS Speicher, speziell dem Typ "Provisioned IOPS (SSD) Volume". Dabei werden die E/A Operationen (Ein- / Ausgabevorgänge) pro Sekunde in Rechnung gestellt. Wenn es nun zu Problemen mit einem Programm kommt und sehr oft auf das Swapfile zugegriffen werden muß können hohe Kosten entstehen. Siehe hierzu: Amazon EBS Preise http://aws.amazon.com/de/ebs/pricing/.

Zur Sicherheit sollte im "CloudWatch" Dashboard eine Kosten-Warnung eingerichtet werden!

Das gilt nicht für EBS Standard-Volumes (SSD). Dieser Speichertyp wird nur anhand der bereitgestellten Menge an GB pro Monat berechnet. Die E/A Leistung ist im Preis enthalten. 

 

Aktuell nicht bewertet

Sind Sie bereit für Ihren SEO Erfolg?

Starten Sie mit uns gemeinsam durch.

  Jetzt unverbindlich anfragen!