Actualmente estoy ejecutando una micro instancia ec2 y he descubierto que la instancia ocasionalmente se queda sin memoria.
Además de usar un tamaño de instancia más grande, ¿qué más se puede hacer?
Actualmente estoy ejecutando una micro instancia ec2 y he descubierto que la instancia ocasionalmente se queda sin memoria.
Además de usar un tamaño de instancia más grande, ¿qué más se puede hacer?
Respuestas:
Una solución para este problema es agregar swap
(es decir, paging
) espacio a la instancia.
La paginación funciona creando un área en su disco duro y usándola para memoria adicional, esta memoria es mucho más lenta que la memoria normal, sin embargo, hay mucho más disponible.
Para agregar este espacio adicional a su instancia, escriba:
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
Si necesita más de 1024, cámbielo a algo más alto.
Para habilitarlo de manera predeterminada después de reiniciar, agregue esta línea a / etc / fstab:
/var/swap.1 swap swap defaults 0 0
if
significa 'archivo de entrada', of
significa 'archivo de salida', bs
significa 'tamaño de bloque' y count
es el número de bloques que desea asignar ... puede leer la man
página del comando para obtener más información: linux.die.net/man/1/ dd
$> free -m
El intercambio debe realizarse en el disco de Almacenamiento de instancias (efímero) y no en un dispositivo EBS. El intercambio causará una gran cantidad de IO y aumentará el costo en EBS. EBS también es más lento que el Almacén de instancias y el Almacén de instancias es gratuito con ciertos tipos de instancias EC2 .
Por lo general, se montará en / mnt, pero si no se ejecuta
sudo mount /dev/xvda2 /mnt
Para crear un archivo de intercambio en este dispositivo, haga lo siguiente para un archivo de intercambio de 4 GB
sudo dd if=/dev/zero of=/mnt/swapfile bs=1M count=4096
Asegúrese de que ningún otro usuario pueda ver el archivo de intercambio
sudo chown root:root /mnt/swapfile
sudo chmod 600 /mnt/swapfile
Hacer y marcar como intercambio
sudo mkswap /mnt/swapfile
sudo swapon /mnt/swapfile
Agregue / Asegúrese de que lo siguiente esté en su / etc / fstab
/dev/xvda2 /mnt auto defaults,nobootwait,comment=cloudconfig 0 2
/mnt/swapfile swap swap defaults 0 0
por último habilitar el intercambio
sudo swapon -a
Después de aplicar los pasos mencionados por ajtrichards, puede verificar si su instancia de nivel gratuito de Amazon está utilizando swap con este comando
cat /proc/meminfo
resultado:
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
Total de intercambio: 1048572 kB
Sin intercambio: 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
Puede agregar un intercambio de 1 GB a su instancia con estos comandos:
sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
sudo mkswap /swapfile
sudo swapon /swapfile
Para habilitarlo de manera predeterminada después de reiniciar, agregue esta línea a /etc/fstab
:
/swapfile swap swap defaults 0 0
/swapfile
. Pero también podría montar otro sistema de archivos y crear el archivo de intercambio allí, por ejemplo /mnt/blah/swapfile
.
Si se encuentra en t2
los casos ( t2.micro
, t2.medium
, t2.small
), no hay efímera o instancia de almacenamiento disponible para usted. Por lo tanto, debe crear su intercambio en el EBS
que, dependiendo de su caso de uso, puede o no ser una buena idea. De lo contrario, siga la respuesta de @David y cree su intercambio en el almacenamiento efímero para evitar pagar los costos de EBS.
Más información: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html hay una tabla que muestra cuánto almacenamiento efímero obtienes para cada tipo de instancia.
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.
. Parece que AWS cobrará por las operaciones de lectura y escritura.
Puede crear espacio de intercambio utilizando los siguientes pasos Aquí estamos creando intercambio en /home/
dd if=/dev/zero of=/home/swapfile1 bs=1024 count=8388608
Aquí el recuento es el recuento de kilobytes del espacio de intercambio
mkswap /home/swapfile1
vi /etc/fstab
hacer entrada:
/home/swapfile1 swap swap defaults 0 0
correr:
swapon -a
Podemos agregar espacio de intercambio en cualquier servidor
crear un archivo usando el comando dd
#dd if=/dev/zero of=/swapfile bs=1M count=2048
or
#dd if=/dev/zero of=/swapfile bs=1024M count=2
bs es blockize y count se refiere al tamaño en MB o GB
podemos usar viceversa
Después de la creación, cambie el permiso del archivo:
#chmod 600 /swapfile
Luego hace el intercambio del archivo:
#mkswap /swapfile
Luego habilite el archivo de intercambio con el comando swapon:
#swapon /swapfile
Compruebe con comando libre si el intercambio está habilitado o no:
#free -h
#swapon -s
El uso de la respuesta de almacenamiento de instancias de David inicialmente funcionó para mí (en un m5d.2xlarge), sin embargo, después de detener la instancia de EC2 y volver a encenderla, no pude volver a ingresar a la instancia.
Los registros de la instancia informaron: "Está en modo de emergencia. Después de iniciar sesión, escriba" journalctl -xb "para ver los registros del sistema," reinicio de systemctl "para reiniciar," predeterminado de systemctl "o" salir "para iniciar en modo predeterminado. Presione Entrar para mantenimiento"
En cambio, seguí las instrucciones de AWS en este enlace y todo funcionó perfectamente, incluso después de apagar y volver a encender la instancia.
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
Prueba swapspace http://pqxx.org/development/swapspace/
La mayoría de las distribuciones lo tienen empaquetado.
En EC2 es posible que desee cambiar "swappath" a / mnt o disco de alta iops.
Puede usar el siguiente script para agregar intercambio en Amazon Linux.
https://github.com/chetankapoor/swap
Descargue el script usando wget:
wget https://raw.githubusercontent.com/chetankapoor/swap/master/swap.sh -O swap.sh
Luego ejecute el script con el siguiente formato:
sh swap.sh 2G
Para un tutorial completo puede visitar: