Ich habe ein paar Server auf EC2 gestartet und sie haben keinen Swap.
Mache ich etwas falsch oder haben die Maschinen einfach keine?
linux
ubuntu
amazon-ec2
swap
rafamvc
quelle
quelle
Antworten:
Sie haben Recht, die Ubuntu EC2 EBS-Images werden ohne konfigurierten Swap-Space ausgeliefert ( mindestens für 11.04 ). Die "normalen" instanzartigen Images haben eine Swap-Partition, obwohl nur 896 MB auf der von mir getesteten Partition vorhanden sind.
Wenn ein Prozess in die Luft geht und Sie keinen Auslagerungsspeicher haben, kann Ihr Server für eine Weile zum Stillstand kommen, bevor der OOM-Killer einsetzt, während es beim Auslagerungsspeicher nur langsam wird. Aus diesem Grund habe ich immer gerne Swap Space, auch mit genügend RAM. 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ügen Sie es zu fstab hinzusudo swapon -a
und los geht's . Ich habe das schon einmal gemacht und es funktioniert einwandfrei, aber es ist wahrscheinlich etwas langsamer als der Instanzspeicher, da es über das Netzwerk übertragen wird.Möglicherweise können Sie Ihre Festplatte neu partitionieren, um eine Auslagerungspartition hinzuzufügen. Dies erfordert jedoch möglicherweise die Erstellung eines neuen AMI. In einer laufenden Instanz war dies nicht möglich, da ich das Root-Dateisystem nicht aushängen kann und nicht einmal auf das Plattengerät (/ dev / xvda), sondern nur auf die Partition (xvda1) zugreifen kann.
Oder Sie können eine Auslagerungsdatei erstellen. Dies ist momentan meine bevorzugte Lösung.
Getan. :) Ich weiß, dass es vielen Leuten unangenehm ist, Dateien anstelle von Partitionen zu verwenden, aber es funktioniert auf jeden Fall gut genug als Notfall-Auslagerungsspeicher.
quelle
Der beste Ort für den Swap IMHO ist der Instance-Store. Warum? AWS berechnet Ihnen keine I / O-Gebühren für den Instance-Store. 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?
Lassen Sie uns den Instanzspeicher lokalisieren.
Hurra, 160.1GB kostenlos! Legen Sie Ihren Swap dort ein und vergessen Sie 100 $ Überschuss pro Server, wenn Ihr EBS-basierter Swap versehentlich überfüllt ist. Unglückliche Erfahrung hier zu reden.
Anscheinend sehen Sie in einigen Fällen den Instance-Store nicht.
quelle
Hinweis : Amazon hat seine Preisrichtlinie geändert und erhebt ab Mitte 2016 keine Gebühren für E / A-Anfragen. Die Antwort wird aus historischen Gründen hier aufbewahrt, aber es gibt keine Kostenfolgen bei der Verwendung (oder Nichtverwendung) von Swap auf EC2-EBS-gestützten Instanzen.
Dies ist beabsichtigt. 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. auf 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 Umständen sollten Sie sich darüber keine Sorgen machen. in der Regel betragen die Kosten für I / O-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 sei vorsichtig mit winzigen Instanzen.
Wenn Sie Swap aktivieren, möchten Sie möglicherweise Nutzungsberichte im Auge behalten. Optional können Sie auch einen Abrechnungsalarm einrichten, indem Sie in der CloudWatch-Systemsteuerung einen neuen Alarm für den gesamten Rechnungsbetrag erstellen. Auf diese Weise werden Sie sofort benachrichtigt, was bei Ihren Instanzen seltsam ist.
quelle
Überprüfen Sie die
/etc/fstab
Datei. Sie wurden wahrscheinlich eingerichtet, ohne das verwendete Image auszutauschen. Ich denke, einige Leute laufen ohne Swap für Server, da sie erwarten, nie mehr als den gesamten Arbeitsspeicher zu verbrauchen - Swap macht alles super langsam.Ich bin jedoch immer paranoid, wenn es darum geht, einen Prozess im Speicher aufzublähen. Ich halte es daher für ratsam, einfach ein Auslagerungslaufwerk einzurichten und ein Image von der ausgeführten ec2-Instanz neu zu erstellen.
quelle
Eine einfache Lösung zum Einspielen
swap
vonEC2
Bildern besteht darin,swap
komprimiert mitlz4
inram
mit auszuführenzram-init
.systemd
& verfügbaropenrc
.Diese Lösung ist nicht nehmen
ram
weg von denhost
:quelle
zswap
, um den komprimierten RAM-Cache über einer normalen Auslagerungsdatei / -platte bereitzustellen : wiki.archlinux.org/index.php/zswap . Weitere Informationen zu zram finden Sie unter cnx-software.com/2018/05/14/….