it-swarm.com.de

Warum haben EC2-Ubuntu-Bilder keinen Swap?

Ich habe ein paar Server auf EC2 gestartet und sie haben keinen Swap.

Mache ich etwas falsch oder haben die Maschinen einfach keine?

84
rafamvc

Sie haben Recht, für die Ubuntu EC2 EBS-Images ist kein Swap Space konfiguriert (zumindest für 11.04 ). Die "normalen" Instanz-Images haben eine Swap-Partition, wenn auch nur 896 MB auf der von mir getesteten.

Wenn ein Prozess in die Luft geht und Sie keinen Swap-Speicherplatz haben, kann Ihr Server für eine Weile zum Stillstand kommen, bevor der OOM-Killer startet, während er beim Swap nur langsam wird. Aus diesem Grund habe ich immer gerne Swap-Speicherplatz, auch wenn genügend RAM vorhanden ist. Hier sind Ihre Optionen:

  • Erstellen Sie ein EBS-Volume (2-4 mal so groß wie Ihr RAM), hängen Sie es an Ihre Instanz an (ich nenne es gerne/dev/xvdm für "Speicher"), Sudo mkswap /dev/xvdm, füge es zu fstab hinzu, Sudo swapon -a, und du kannst loslegen. Ich habe dies schon einmal gemacht und es funktioniert gut, aber es ist wahrscheinlich etwas langsamer als der Instanzspeicher, da es über das Netzwerk läuft.

  • Möglicherweise können Sie Ihre Festplatte neu partitionieren, um eine Swap-Partition hinzuzufügen. Dies erfordert jedoch möglicherweise die Erstellung eines neuen AMI. Ich konnte dies in einer laufenden Instanz nicht tun, da ich das Root-Dateisystem nicht aushängen kann und nicht einmal Zugriff auf das Festplattengerät (/ dev/xvda) habe, sondern nur auf die Partition (xvda1).

  • Oder Sie können eine Auslagerungsdatei erstellen. Dies ist momentan meine bevorzugte Lösung.

    Sudo dd if=/dev/zero of=/var/swapfile bs=1M count=2048 &&
    Sudo chmod 600 /var/swapfile &&
    Sudo mkswap /var/swapfile &&
    echo /var/swapfile none swap defaults 0 0 | Sudo tee -a /etc/fstab &&
    Sudo swapon -a
    

    Erledigt. :) Ich weiß, dass viele Leute Schwierigkeiten haben, Dateien anstelle von Partitionen zu verwenden, aber es funktioniert auf jeden Fall gut genug als Notfall-Swap-Bereich.

75
Jo Liss

Der beste Ort für Swap IMHO ist der Instanzspeicher. Warum? AWS berechnet Ihnen keine E/A für den Instanzspeicher. Außerdem ist der Instanzspeicher in vielen Fällen leistungsfähiger als EBS. Stellen Sie einfach sicher, dass Sie ein Skript haben, das die Auslagerungsdatei neu erstellt, falls Sie die Instanz stoppen. Neustarts sind in Ordnung. Warum oh, warum ist es nicht standardmäßig da?

Suchen wir den Instanzspeicher.

[email protected]**-**-**-**-**-**:/var/log# fdisk -l

[...]

Disk /dev/xvda2: 160.1 GB, 160104972288 bytes
255 heads, 63 sectors/track, 19464 cylinders, total 312705024 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/xvda2 doesn't contain a valid partition table

Hurra, 160,1 GB kostenlos! Legen Sie Ihren Swap dort ab und vergessen Sie 100 $ Überschüsse pro Server, wenn Ihr EBS-basierter Swap versehentlich überfüllt ist. Unglückliche Erfahrung hier zu sprechen.

Anscheinend sehen Sie in einigen Fällen den Instanzspeicher nicht.

Abhängig vom Instanztyp müssen Sie zuerst die Instanzspeichervolumes mithilfe der Blockgerätezuordnungsoptionen an die Instanz anhängen. Wenn Sie dies nicht tun, werden möglicherweise nicht einmal die Geräte unter/dev angezeigt (gemäß Verwendung des Speichers "Instance Store Volumes" in Amazon EC2? )

25
sebwinadmin

Hinweis: Amazon hat seine Preispolitik geändert und tut dies nicht Gebühr für E/A-Anfragen ab Mitte 2016. Die Antwort wird hier aus historischen Gründen aufbewahrt, aber es gibt keine Kostenauswirkungen der Verwendung (oder Nichtverwendung) von Swap auf EC2-EBS-gestützten Instanzen.


Dies ist beabsichtigt. Der Swap ist bei EC2 EBS-gestützten Instanzen standardmäßig deaktiviert, um unvorhersehbare Kosten zu vermeiden.

Wenn Sie eine speicherhungrige App haben, die nicht mehr funktioniert (z. B. in einer winzigen oder kleinen Instanz), kann sie eine große Anzahl von E/A-Anforderungen auf Ihrem EBS-Volume generieren. Amazon berechnet 0,10 USD pro 1 Million E/A-Anfragen (siehe http://aws.Amazon.com/pricing/ebs/ )..

Unter normalen Bedingungen sollten Sie sich darüber keine Sorgen machen. In der Regel betragen die Kosten für E/A-Anfragen auch bei kleineren Instanzen ein paar Dollar, wenn ja. Wenn Sie also wissen, dass Sie eine Instanz mit der richtigen Größe haben und dieser Swap nur selten verwendet wird, aktivieren Sie ihn. Aber seien Sie vorsichtig mit winzigen Fällen.

Wenn Sie den Austausch aktivieren, möchten Sie möglicherweise die Nutzungsberichte im Auge behalten. Optional können Sie auch einen Abrechnungsalarm einrichten, indem Sie zu CloudWatch-Systemsteuerung gehen und einen neuen Alarm für den gesamten Rechnungsbetrag erstellen. Auf diese Weise werden Sie sofort benachrichtigt. Bei Ihren Instanzen ist etwas Seltsames los.

21
Gui Ambros

Überprüf den /etc/fstab Datei, sie wurden wahrscheinlich ohne Austausch in dem von Ihnen verwendeten Bild eingerichtet. Ich denke, einige Leute laufen ohne Austausch gegen Server, da sie erwarten, nie mehr als den gesamten Speicher zu verwenden - das Austauschen macht alles sehr langsam.

Ich bin jedoch immer paranoid, wenn ein Prozess im Speicher auftaucht. Daher halte ich es für ratsam, einfach ein Auslagerungslaufwerk einzurichten und ein Image aus der laufenden ec2-Instanz neu zu erstellen.

1
ehsanul

Eine einfache Lösung zum Ausführen von swap in EC2 - Bildern besteht darin, swap komprimiert mit lz4 In ram mit zram-init .

Diese Lösung nimmt nicht ram vom Host weg:

(enter image description here

0
Stuart Cardall