Vraag Waarom hebben EC2-ubuntu-afbeeldingen geen ruil?


Ik startte een paar servers op EC2 en ze hebben geen swap.

Doe ik iets verkeerd of is het dat de machines gewoon niet hebben?


74
2018-01-04 21:53


oorsprong


Dat heb ik ook afgevraagd, maar ik heb zojuist een EBS-instantie opgezet, geformatteerd als swap en swapon / dev / sdg ... - Tom O'Connor
Het is ook typisch, het geval van het gebruik van SSD-schijven op een Linux-systeem om swap op de SSD-schijf niet in te stellen. Vooral omdat sommige mensen paranoïde zijn, zou dit de levensduur van een SSD negatief beïnvloeden door steeds dezelfde reeks sectoren te boren. - djangofan
Welke AMI en welke EC2-instantie. De AMI moet worden geconfigureerd om een ​​swap-partitie te gebruiken en de instance moet worden toegevoegd bij het opstarten. - Jeremy Bouse
Als het enigszins mogelijk is, raad ik aan om EC2 niet te swappen, tenzij je 99% zeker weet dat je het niet hoeft te gebruiken (I.E. het is alleen daar voor noodgevallen). Toen we een aantal van onze EC2-gevallen uitwisselden, zijn onze maandelijkse EBS IO-kosten waarschijnlijk gehalveerd. Alleen mijn twee cent om u twee cent te besparen - ja dat was verschrikkelijk, ik bied mijn excuses aan en zal me verstoppen in een hoek;) - Smudge
Je zou ook in deze stappen kunnen kijken docs.aws.amazon.com/AWSEC2/latest/UserGuide/... - Artem.Borysov


antwoorden:


Je hebt gelijk, de Ubuntu EC2 EBS-afbeeldingen hebben geen swapspace geconfigureerd (voor 11.04 tenminste). De "gewone" exemplaren van het type instance hebben een swappartitie, hoewel slechts 896 MB op degene die ik heb getest.

Als een proces wordt opgeblazen en je geen swapruimte hebt, kan je server geruime tijd stil blijven staan ​​voordat de OOM-moordenaar inschakelt, terwijl het met swap alleen maar trager wordt. Om die reden vind ik het altijd prettig om swapspace rond te hebben, zelfs met voldoende RAM. Dit zijn je opties:

  • Maak een EBS-volume (2-4 keer de grootte van je RAM), koppel het aan je instantie (ik vind het leuk om het te noemen / dev / xvdm voor "geheugen"), sudo mkswap /dev/xvdm, voeg het toe aan fstab, sudo swapon -aen je bent klaar om te gaan. Ik heb dit eerder gedaan en het werkt prima, maar het is waarschijnlijk een beetje langzamer dan bijvoorbeeld store omdat het over het netwerk gaat.

  • Of misschien kunt u uw schijf opnieuw partitioneren om een ​​swap-partitie toe te voegen, hoewel hiervoor mogelijk een nieuwe AMI moet worden gemaakt. Ik heb dit niet in een actieve instantie kunnen doen, omdat ik het rootbestandssysteem niet kan ontkoppelen en ik heb zelfs geen toegang tot het schijfapparaat (/ dev / xvda), alleen de partitie (xvda1).

  • Of u kunt een wisselbestand maken. Dit is mijn voorkeursoplossing op dit moment.

    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
    

    Gedaan. :) Ik weet dat veel mensen zich icky voelen over het gebruik van bestanden in plaats van partities, maar het werkt zeker goed genoeg als noodruilruimte.


70
2018-06-12 14:46



Het omwisselen naar een EBS-volume kan extra kosten met zich meebrengen, zoals aangegeven door de andere antwoorden. Geen gebruik maken van swap, of omwisselen naar een instantie store lijken betere oplossingen. - isuldor
Het gebruik van de instantie-opslag is een betere optie dan EBS. EBS is een netwerkbestandssysteem, dus maakt verbinding met het EC2-subsysteem via dezelfde netwerkverbinding als al het andere. Exemplaaropslag is gekoppeld aan de hardware die als host fungeert voor de instantie (daarom blijft deze niet bestaan ​​wanneer u uw instantie stopt en start). De enige keer dat EBS een optie voor swap is, is dat wanneer u een instantie-type gebruikt dat niet wordt geleverd met exemplaaropslag, dat wil zeggen, de t1.micro (die deze alleen maar ongeveer 620 MB RAM heeft, waarschijnlijk degene is die echt nood nodig heeft) swap). - ColtonCat
De bs = 1M is al in binaire notatie, dus de telling = 2048 vermenigvuldiger moet telling = 2000 zijn - als ik me niet vergis. - ypocat
Als je voor 2GiB gaat, lijkt 1024 * 2048 correct. - Jo Liss


De beste locatie voor het wisselen van IMHO is de instantie-store. Waarom? AWS rekent u niet aan voor i / o in de instantie-store. Bovendien is de instantie-store in veel gevallen performanter dan EBS. Zorg ervoor dat u een script hebt dat het wisselbestand reconstrueert voor het geval u het exemplaar stopt. Opnieuw opstarten is prima. Waarom oh waarom het er standaard niet is?

Laten we de instantie-store lokaliseren.

root@domU-**-**-**-**-**-**:/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

Hoera, 160,1 GB gratis! Zet hier je swap in en vergeet 100 $ overschotten per server als je EBS-gebaseerde swap per ongeluk zwermt. Ongelukkige ervaring om hier te praten.

Blijkbaar zie je in sommige gevallen de instantie-store niet.

Afhankelijk van het exemplaartype moet u eerst de instantieopslagvolumes aan de instantie koppelen door de opties voor block-device-mapping te gebruiken. Als u dit niet doet, ziet u de apparaten mogelijk niet eens onder / dev (als per Hoe gebruik je "Instance Store Volumes" -opslag in Amazon EC2?)


21
2017-11-24 18:57



wil alleen opmerken dat t1.micro-gebruikers op gratis niveau deze optie niet kunnen gebruiken. - Reuben L.


Notitie: Amazon heeft hun veranderd prijsbeleid, en brengt geen kosten in rekening voor I / O-verzoeken vanaf medio 2016. Het antwoord wordt hier om historische redenen bewaard, maar er zijn geen kosten verbonden aan het gebruik van (of niet het gebruik van) swap op EC2 EBS-ondersteunde instanties.


19
2017-10-21 06:53



Dit antwoord is een beetje misleidend of verwarrend voor mij, aangezien de meest voorkomende instantie typen SSD-volumes gebruiken. aws.amazon.com/ec2/instance-types - Taylor Edmiston
@tedmiston: inderdaad, dit antwoord is niet meer van toepassing. Ik heb me aangepast om de nieuwe realiteit weer te geven, maar in principe zijn er geen kosten voor I / O-verzoeken, dus het inschakelen van swap (of niet) kan nu op pure technische basis worden gemaakt. - Gui Ambros


Controleer de /etc/fstab bestand, ze zijn waarschijnlijk ingesteld zonder te wisselen in de afbeelding die u gebruikt. Ik denk dat sommige mensen zonder swap voor servers draaien omdat ze verwachten nooit meer te gebruiken dan het totale geheugen - wisselen maakt alles super langzaam.

Ik ben echter altijd paranoïde over een proces dat zich in het geheugen verheft, dus ik denk dat het verstandig zou zijn om eenvoudigweg een swap-schijf in te stellen en een afbeelding opnieuw te maken van de actieve ec2-instantie.


1
2018-01-05 21:09



Incidenteel wisselen maakt het systeem niet traag. - laebshade


Een eenvoudige oplossing voor hardlopen swap in EC2 afbeeldingen moeten worden uitgevoerd swap gecomprimeerd met lz4 in ram met zram-init.

Deze oplossing doet niet nemen ram weg van de host:

enter image description here


0
2017-08-24 08:14



Erg creatief, maar zou het niet gebruiken van je RAM als echte RAM meer zin hebben dan het te gebruiken als een in-memory bestandssysteem voor swap? (die voornamelijk wordt gebruikt als het geheugen op is). Het verminderen van de hoeveelheid beschikbaar geheugen voor toepassingen om een ​​wissel te maken lijkt contra-intuïtief ... - HBruijn
Interessant antwoord, maar ik denk dat het gebruik van EBS / instance store waarschijnlijk een betere algemene oplossing is. Ik heb een t2.nano met 512 MB RAM en 512 MB swap op EBS dat werkt prima. - Tim