Attualmente sto eseguendo una microistanza ec2 e ho riscontrato che l'istanza a volte esaurisce la memoria.
Oltre a utilizzare una dimensione dell'istanza più grande, cos'altro si può fare?
Attualmente sto eseguendo una microistanza ec2 e ho riscontrato che l'istanza a volte esaurisce la memoria.
Oltre a utilizzare una dimensione dell'istanza più grande, cos'altro si può fare?
Risposte:
Una soluzione per questo problema è aggiungere swap
(cioè paging
) spazio all'istanza.
Il paging funziona creando un'area sul disco rigido e utilizzandola per memoria aggiuntiva, questa memoria è molto più lenta della memoria normale, anche se è disponibile molto di più.
Per aggiungere questo spazio extra alla tua istanza, digita:
sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
sudo /sbin/mkswap /var/swap.1
sudo chmod 600 /var/swap.1
sudo /sbin/swapon /var/swap.1
Se hai bisogno di più di 1024, cambialo in qualcosa di più alto.
Per abilitarlo di default dopo il riavvio, aggiungi questa riga a / etc / fstab:
/var/swap.1 swap swap defaults 0 0
if
significa "file di input", of
"file di output", bs
"dimensione del blocco" ed count
è il numero di blocchi che si desidera allocare ... è possibile leggere la man
pagina del comando per maggiori informazioni: linux.die.net/man/1/ dd
$> free -m
Lo scambio dovrebbe avvenire sul disco di archiviazione dell'istanza (effimero) e non su un dispositivo EBS. Lo scambio causerà molto IO e aumenterà i costi su EBS. EBS è anche più lento di Instance Store e Instance Store viene fornito gratuitamente con alcuni tipi di istanze EC2 .
Di solito sarà montato su / mnt ma se non eseguito
sudo mount /dev/xvda2 /mnt
Per creare un file di scambio su questo dispositivo, procedi come segue per un file di scambio da 4 GB
sudo dd if=/dev/zero of=/mnt/swapfile bs=1M count=4096
Assicurarsi che nessun altro utente possa visualizzare il file di scambio
sudo chown root:root /mnt/swapfile
sudo chmod 600 /mnt/swapfile
Crea e contrassegna come swap
sudo mkswap /mnt/swapfile
sudo swapon /mnt/swapfile
Aggiungi / Assicurati che quanto segue sia nel tuo / etc / fstab
/dev/xvda2 /mnt auto defaults,nobootwait,comment=cloudconfig 0 2
/mnt/swapfile swap swap defaults 0 0
abilitare infine lo scambio
sudo swapon -a
Dopo aver applicato i passaggi menzionati da ajtrichards, puoi verificare se la tua istanza di livello gratuito di Amazon utilizza swap usando questo comando
cat /proc/meminfo
risultato:
ubuntu@ip-172-31-24-245:/$ cat /proc/meminfo
MemTotal: 604340 kB
MemFree: 8524 kB
Buffers: 3380 kB
Cached: 398316 kB
SwapCached: 0 kB
Active: 165476 kB
Inactive: 384556 kB
Active(anon): 141344 kB
Inactive(anon): 7248 kB
Active(file): 24132 kB
Inactive(file): 377308 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 1048572 kB
SwapFree: 1048572 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 148368 kB
Mapped: 14304 kB
Shmem: 256 kB
Slab: 26392 kB
SReclaimable: 18648 kB
SUnreclaim: 7744 kB
KernelStack: 736 kB
PageTables: 5060 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 1350740 kB
Committed_AS: 623908 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 7420 kB
VmallocChunk: 34359728748 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 637952 kB
DirectMap2M: 0 kB
È possibile aggiungere uno scambio da 1 GB all'istanza con questi comandi:
sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
sudo mkswap /swapfile
sudo swapon /swapfile
Per abilitarlo per impostazione predefinita dopo il riavvio, aggiungere questa riga a /etc/fstab
:
/swapfile swap swap defaults 0 0
/swapfile
. Ma potresti anche montare un altro filesystem e creare lì il file di scambio, ad es /mnt/blah/swapfile
.
Se siete su t2
casi ( t2.micro
, t2.medium
, t2.small
), non v'è effimera o istanza di archiviazione a vostra disposizione. Quindi devi solo creare il tuo swap in EBS
cui, a seconda del tuo caso d'uso, può o non può essere una buona idea. Altrimenti segui la risposta di @David e crea il tuo scambio sull'archiviazione effimera per evitare di pagare i costi EBS.
Maggiori informazioni: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html c'è una tabella che mostra la quantità di memoria effimera che ottieni per ogni tipo di istanza.
For example, if you provision a volume with 1000 IOPS, and keep this volume for 15 days in a 30 day month, then in a Region that charges $0.10 per provisioned IOPS-month, you would be charged $50 for the IOPS that you provision ($0.10 per provisioned IOPS-month * 1000 IOPS provisioned * 15 days/30). You will be charged for the IOPS provisioned on a volume even when the volume is detached from an instance.
. Il che sembra che AWS addebiterà le operazioni di lettura e scrittura.
È possibile creare lo spazio di swap utilizzando i seguenti passaggi Qui stiamo creando swap a /home/
dd if=/dev/zero of=/home/swapfile1 bs=1024 count=8388608
Qui conta è il conteggio dei kilobyte dello spazio di swap
mkswap /home/swapfile1
vi /etc/fstab
fare l'ingresso:
/home/swapfile1 swap swap defaults 0 0
correre:
swapon -a
Possiamo aggiungere spazio di swap in qualsiasi server
crea un file usando il comando dd
#dd if=/dev/zero of=/swapfile bs=1M count=2048
or
#dd if=/dev/zero of=/swapfile bs=1024M count=2
bs è a blocchi e conteggio si riferisce alla dimensione in MB o GB
possiamo usare viceversa
Dopo la creazione modificare l'autorizzazione del file:
#chmod 600 /swapfile
Quindi effettua il swap del file:
#mkswap /swapfile
Quindi abilitare il file di scambio con il comando swapon:
#swapon /swapfile
Verifica con comando gratuito se lo swap è abilitato o meno:
#free -h
#swapon -s
Usando la risposta di David Instance Storage inizialmente ha funzionato per me (su un m5d.2xlarge) tuttavia, dopo aver fermato l'istanza EC2 e averla riaccesa, non sono stato in grado di collegarmi di nuovo all'istanza.
I registri dell'istanza riportavano: "Sei in modalità di emergenza. Dopo aver effettuato l'accesso, digita" journalctl -xb "per visualizzare i registri di sistema," riavvio di systemctl "per riavviare," systemctl default "o" esci "per avviare in modalità predefinita. Premi Invio per manutenzione"
Ho invece seguito le istruzioni AWS in questo link e tutto ha funzionato perfettamente, anche dopo aver spento e riacceso l'istanza.
https://aws.amazon.com/premiumsupport/knowledge-center/ec2-memory-swap-file/
sudo dd if=/dev/zero of=/swapfile bs=1G count=4
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo swapon -s
sudo vi /etc/fstab
/swapfile swap swap defaults 0 0
Prova lo spazio http://pqxx.org/development/swapspace/
Molte distribuzioni lo hanno confezionato.
Su EC2 potresti voler cambiare "swappath" in disco / mnt o high-iops.
È possibile utilizzare il seguente script per aggiungere lo scambio su Amazon Linux.
https://github.com/chetankapoor/swap
Scarica lo script usando wget:
wget https://raw.githubusercontent.com/chetankapoor/swap/master/swap.sh -O swap.sh
Quindi eseguire lo script con il seguente formato:
sh swap.sh 2G
Per un tutorial completo puoi visitare: