Blog | 3dSEO.de SEO Agentur Münchenhttps://www.3dseo-neu.de/blog/2024-03-27T17:44:14+00:00Blog - SEO - Internetagentur - Django - Online Marketing - Entwicklung - CSS - Suche - ToolsSwap File auf Ubuntu 14.04 bei Amazon AWS EC2 aktivieren2014-08-22T11:08:11+00:002024-03-27T17:44:14+00:00Christian Hoffmannhttps://www.3dseo-neu.de/blog/author/hoffmann/https://www.3dseo-neu.de/blog/swap-file-aktivieren-ubuntu-amazon-aws-server/<h2>Wozu Linux Swapping?</h2>
<p>Ein <strong>Linux Swap File</strong> 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<span> Swap Files einbrechen. Auf der anderen Seite kann ein Swap File extrem hilfreich sein, wenn der Server ausnahmsweise an seine Speichergrenze kommt. </span></p>
<p><strong>Ohne</strong> aktives Swap File führt das im schlechtesten Fall zum <strong>Crash und Serverausfall</strong>. Das ist für den SEO und den Unternehmer ein echtes Worst Case Szenario. Besucher bekommen nur eine <strong>Error 500</strong> Fehlermeldung zu sehen. Die Besucherzahlen und <strong>Umsätze brechen ein</strong>, die Bouncerate zurück zu Google steigt sprunghaft.</p>
<p>Blöd ist wenn gerade auch noch AdWords Anzeigen geschaltet werden und zusätzliche Kosten anfallen. </p>
<p>Besser achten wir gleich von Anfang an auf eine solche "Kleinigkeit".</p>
<h2>Amazon EC2 Ubuntu 14.04</h2>
<p>Beim Amazon EC2 Server<span> 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.</span></p>
<p>http://aws.amazon.com</p>
<h2>Cannot allocate memory</h2>
<p><span>Tritt bei der Installation neuer Python Pakete der Fehler "</span><span>Cannot allocate memory" mit folgender Fehlermeldung auf?</span></p>
<pre>Error [Errno 12] Cannot allocate memory while executing command python setup.py egg_info</pre>
<p><span>Das kann ebenfalls an zu wenig Speicher in Verbindung mit fehlendem Swap-File liegen.</span></p>
<p><span>Mit free -m überprüfen wir den vorhandenen Speicher:</span></p>
<pre>$ free -m</pre>
<p></p>
<p><span> </span></p>
<h2>Wie prüfe ich ob ein Swap File vorhanden ist</h2>
<p>Vor dem anlegen eines Swap File's, müssen wir checken ob es bereits eines auf dem VPS Server gibt und es aktiviert ist:</p>
<pre>sudo swapon -s</pre>
<p><span>Ein leeres Ergebnis bestätigt: das Swap File fehlt.</span></p>
<pre><span>$ sudo swapon -s<br/></span><span>Filename Type Size Used Priority</span></pre>
<p><span> </span></p>
<h2><span>Wie kann ich die File System Größe herausfinden?</span></h2>
<p><span>Nachdem wir nun wissen, daß kein Swap File auf dem Ubuntu Linux Server vorhanden ist, prüfen wir mit den <em>df</em> 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 </span></p>
<p></p>
<pre>$ df -h<br/><span>Filesystem Size Used Avail Use% Mounted on<br/></span><span>/dev/xvda1 7.9G 1.8G 5.8G 24% /<br/></span><span>udev 288M 8.0K 288M 1% /dev<br/></span><span>tmpfs 60M 184K 59M 1% /run<br/></span><span>none 5.0M 0 5.0M 0% /run/lock<br/></span><span>none 296M 0 296M 0% /run/shm</span></pre>
<p><span>Aktuell sind 5,8GB verfügbar, genug Platz für das Swap File.</span></p>
<h2><span>Swap File erstellen und aktivieren</span></h2>
<p><span>Eine 256MB große Swap Datei wird per dd Kommando erstellt:</span></p>
<pre>$ <span>sudo dd if=/dev/zero of=/swapfile bs=1024 count=256k</span></pre>
<p><span>if=/dev/zero mit dem spezial Device "/dev/zero" besteht die Eingabe aus lauter Nullen <br/>of=/swapfile ist der Dateiname des Swap Files<br/>mit bs=1024 und count=256k wird die Größe festegelgt. <br/><br/></span><span class="label label-danger">Achtung:</span> 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 :-)</p>
<p><span> </span></p>
<p><span>Erzeugte Datei als Linux Swap Bereich vorbereiten:</span></p>
<pre>$ <span>sudo mkswap /swapfile</span></pre>
<p><span>Die Ausgabe dazu:</span></p>
<pre><span><br/></span><span>Setting up swapspace version 1, size = 262140 KiB<br/></span><span>no label, UUID=bc9ba5ac-ca06-1814-a231-be36bab3cdf8</span></pre>
<p><span> </span></p>
<p><span>Swap Datei aktivieren:</span></p>
<pre><span>$ sudo swapon /swapfile</span></pre>
<p><span>Das neue Swap File ist nun sichtbar in der Swap Übersicht:</span></p>
<p></p>
<pre>$ swapon -s<br/><span>Filename Type Size Used Priority<br/></span><span>/swapfile file 262140 0 -1</span></pre>
<p></p>
<p></p>
<p>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:</p>
<pre>sudo nano /etc/fstab</pre>
<p>und füge folgende Zeile ein:</p>
<pre>/swapfile none swap sw 0 0 </pre>
<p><span>Mit Swappiness auf 10 gesetzt, verhält sich das Swap File als Notfall Puffer und kann einen Servercrash wegen mangelndem Hauptspeicher verhindern.</span></p>
<p><span>Folgende Kommandos erledigen das:</span></p>
<pre><span>$ echo 10 | sudo tee /proc/sys/vm/swappiness<br/></span><span>$ echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf</span></pre>
<p><span> </span></p>
<p>Zuletzt noch die Rechte anpassen, damit das Swapfile nicht für jeden lesbar ist:</p>
<pre>$ sudo chown root:root /swapfile<br/>$ sudo chmod 0600 /swapfile </pre>
<p><span> Berechtigung noch prüfen:</span></p>
<pre>$ ls -la /swapfile <br/><span>-rw------- 1 root root 268435456 Aug 22 12:40 /swapfile</span></pre>
<p><span>So soll das aussehen. Gut gemacht und Fertig! </span></p>
<p><span> </span></p>
<h2>Warum ist standardmäßig kein Swapfile aktiviert?</h2>
<p><span>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 <a href="http://aws.amazon.com/de/ebs/pricing/">http://aws.amazon.com/de/ebs/pricing/</a>.</span></p>
<p>Zur Sicherheit sollte im "CloudWatch" Dashboard eine Kosten-Warnung eingerichtet werden!</p>
<p><span>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. </span></p>
<p><span> </span></p>