Ho avviato un paio di server su EC2 e non hanno swap.
Sto sbagliando o è che le macchine non ne hanno?
Ho avviato un paio di server su EC2 e non hanno swap.
Sto sbagliando o è che le macchine non ne hanno?
Risposte:
Hai ragione, le immagini di Ubuntu EC2 EBS non hanno lo spazio di swap configurato ( almeno per 11.04 ). Le immagini "normali" di tipo istanza hanno una partizione di swap, sebbene solo 896 MB su quella che ho testato.
Se un processo si interrompe e non si dispone di spazio di scambio, il server potrebbe arrestarsi per un po 'prima che il killer OOM entri in azione, mentre con lo scambio diventa semplicemente lento. Per questo motivo, mi piace sempre avere uno spazio di scambio in giro, anche con abbastanza RAM. Ecco le tue opzioni:
Crea un volume EBS (2-4 volte la dimensione della tua RAM), collegalo alla tua istanza (mi piace chiamarlo / dev / xvdm per "memoria") sudo mkswap /dev/xvdm
, aggiungilo a fstab sudo swapon -a
e sei pronto per partire . L'ho già fatto e funziona bene, ma è probabilmente un po 'più lento dell'archivio di istanze perché passa attraverso la rete.
Oppure potresti essere in grado di ripartizionare il disco per aggiungere una partizione di swap, anche se questo potrebbe richiedere la creazione di una nuova AMI. Non sono stato in grado di farlo in un'istanza in esecuzione, perché non riesco a smontare il file system di root e non ho nemmeno accesso al dispositivo disco (/ dev / xvda), solo alla partizione (xvda1).
Oppure puoi creare un file di scambio. Questa è la mia soluzione preferita in questo momento.
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
Fatto. :) So che molte persone si sentono male per l'utilizzo di file anziché di partizioni, ma sicuramente funziona abbastanza bene come spazio di scambio di emergenza.
La posizione migliore per lo scambio IMHO è l'istanza-archivio. Perché? AWS non ti addebita alcun costo per i / o sul negozio di istanze. Inoltre, l'istanza-store è più performante di EBS in molti casi. Assicurati di avere uno script che ricrea il file di scambio nel caso in cui interrompi l'istanza. I riavvii vanno bene. Perché oh perché non è lì per impostazione predefinita?
Individuiamo l'istanza-store.
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
Evviva, 160,1 GB gratis! Inserisci lo swap lì dentro e dimentica i $ 100 in eccesso per server quando lo swap basato su EBS viene sciamato per errore. Esperienza spiacevole parlare qui.
Apparentemente in alcuni casi non vedi l'istanza-store.
A seconda del tipo di istanza, è innanzitutto necessario collegare i volumi del negozio di istanze all'istanza utilizzando le opzioni di mappatura del dispositivo a blocchi. Se non lo fai, potresti non vedere nemmeno i dispositivi in / dev (come in Come utilizzare i volumi di archiviazione dei volumi di istanza in Amazon EC2? )
Nota : Amazon ha modificato la propria politica dei prezzi e non applica alcun addebito per le richieste di I / O a partire dalla metà del 2016. La risposta è conservata qui per motivi storici, ma non ci sono implicazioni in termini di costi derivanti dall'uso (o non utilizzo) dello scambio su istanze supportate da EBS in EC2.
Questo è di progettazione. Lo scambio è disattivato per impostazione predefinita nelle istanze supportate da E2 su EC2, per evitare costi imprevedibili.
Se hai un'app affamata di memoria che va male (diciamo, su un'istanza piccola o piccola), può generare una quantità abbastanza grande di richieste I / O sul tuo volume EBS. Amazon addebita $ 0,10 per 1 milione di richieste I / O (vedi http://aws.amazon.com/pricing/ebs/ ) .
In condizioni normali non dovresti preoccupartene; di solito il costo delle richieste I / O anche su istanze più piccole di qualche dollaro, se è così. Quindi, se sai di avere un'istanza di dimensioni adeguate e che lo swap verrà utilizzato solo raramente, vai avanti e abilitalo. Ma fai attenzione con esempi minuscoli.
Se si abilita lo scambio, è possibile tenere d'occhio i rapporti sull'utilizzo. Facoltativamente, puoi anche impostare un avviso di fatturazione andando sul pannello di controllo di CloudWatch e creando un nuovo allarme per l'importo totale fatturato. In questo modo sarai avvisato immediatamente è qualcosa di strano nelle tue istanze.
Controlla il /etc/fstab
file, probabilmente sono stati configurati senza scambiare l'immagine che stai utilizzando. Penso che alcune persone corrano senza scambiare i server poiché si aspettano di non usare mai più della memoria totale - lo scambio rende tutto molto lento.
Tuttavia, sono sempre paranoico su alcuni processi che si accumulano in memoria, quindi penso che sarebbe prudente da parte tua semplicemente impostare un'unità di swap e ricreare un'immagine dall'istanza ec2 in esecuzione.
Una soluzione semplice per l'esecuzione swap
in EC2
immagini consiste nell'esecuzione swap
compressa con lz4
in ram
con zram-init
.
Questa soluzione non non prendere ram
lontano dal host
:
zswap
che fornisce cache RAM compressa su un normale file / disco di scambio: wiki.archlinux.org/index.php/zswap . Vedi cnx-software.com/2018/05/14/… per ulteriori informazioni su zram.