Comencé un par de servidores en EC2 y no tienen intercambio.
¿Estoy haciendo algo mal o es que las máquinas simplemente no tienen ninguna?
Comencé un par de servidores en EC2 y no tienen intercambio.
¿Estoy haciendo algo mal o es que las máquinas simplemente no tienen ninguna?
Respuestas:
Tienes razón, las imágenes de Ubuntu EC2 EBS no vienen con espacio de intercambio configurado ( al menos para 11.04 ). Las imágenes de tipo de instancia "regular" tienen una partición de intercambio, aunque solo 896 MB en la que probé.
Si algún proceso explota y no tiene espacio de intercambio, su servidor podría detenerse por un buen tiempo antes de que el asesino OOM entre en acción, mientras que con el intercambio, simplemente se vuelve lento. Por esa razón, siempre me gusta tener espacio de intercambio, incluso con suficiente RAM. Aquí están tus opciones:
Cree un volumen EBS (2-4 veces el tamaño de su RAM), conéctelo a su instancia (me gusta llamarlo / dev / xvdm para "memoria") sudo mkswap /dev/xvdm
, agréguelo a fstab sudo swapon -a
, y listo. . He hecho esto antes y funciona bien, pero probablemente sea un poco más lento que la tienda de instancias porque va a través de la red.
O quizás pueda volver a particionar su disco para agregar una partición de intercambio, aunque esto puede requerir la creación de una nueva AMI. No he podido hacer esto en una instancia en ejecución, porque no puedo desmontar el sistema de archivos raíz y ni siquiera tengo acceso al dispositivo de disco (/ dev / xvda), solo a la partición (xvda1).
O puede crear un archivo de intercambio. Esta es mi solución preferida en este 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
Hecho. :) Sé que mucha gente se siente mal por usar archivos en lugar de particiones, pero ciertamente funciona lo suficientemente bien como espacio de intercambio de emergencia.
La mejor ubicación para intercambiar en mi humilde opinión es la tienda de instancias. ¿Por qué? AWS no le cobra por E / S en la tienda de instancias. Además, la tienda de instancias es más eficiente que EBS en muchos casos. Solo asegúrese de tener un script que recrea el archivo de intercambio en caso de que detenga la instancia. Los reinicios están bien. ¿Por qué oh por qué no está allí por defecto?
Busquemos la tienda de instancias.
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
¡Hurra, 160.1GB gratis! Ponga su intercambio allí y olvide los excesos de $ 100 por servidor cuando su intercambio basado en EBS se enjambre por error. Desafortunada experiencia hablando aquí.
Aparentemente en algunos casos no ves la tienda de instancias.
Dependiendo del tipo de instancia, primero debe adjuntar los volúmenes del almacén de instancias a la instancia utilizando las opciones de mapeo de dispositivos de bloque. Si no hace esto, es posible que ni siquiera vea los dispositivos en / dev (según Cómo usar el almacenamiento "Instance Store Volumes" en Amazon EC2? )
Nota : Amazon ha cambiado su política de precios y no cobra por las solicitudes de E / S a partir de mediados de 2016. La respuesta se mantiene aquí por razones históricas, pero no hay implicaciones de costo de usar (o no usar) el intercambio en instancias respaldadas por EBS EC2.
Esto es por diseño. El intercambio está desactivado de forma predeterminada en las instancias respaldadas por EC2 EBS, para evitar costos impredecibles.
Si tiene una aplicación que necesita mucha memoria y que no funciona (digamos, en una instancia pequeña o pequeña), puede generar una gran cantidad de solicitudes de E / S en su volumen EBS. Amazon cobra $ 0.10 por 1 millón de solicitudes de E / S (consulte http://aws.amazon.com/pricing/ebs/ ) .
En condiciones normales no debe preocuparse por eso; por lo general, el costo de las solicitudes de E / S, incluso en casos más pequeños, unos pocos dólares, si es así. Entonces, si sabe que tiene una instancia del tamaño adecuado y que el intercambio se usará con poca frecuencia, continúe y habilítelo. Pero ten cuidado con las pequeñas instancias.
Si habilita el intercambio, es posible que desee vigilar los informes de uso. Opcionalmente, también puede configurar una Alerta de facturación yendo al Panel de control de CloudWatch y creando una nueva Alarma por el monto total facturado. De esta forma, se le notificará de inmediato, algo extraño está sucediendo con sus instancias.
Verifique el /etc/fstab
archivo, probablemente se configuraron sin cambiar la imagen que está utilizando. Creo que algunas personas corren sin intercambio de servidores, ya que esperan nunca usar más que la memoria total; el intercambio hace que todo sea muy lento.
Sin embargo, siempre estoy paranoico sobre algún proceso que se dispara en la memoria, por lo que creo que sería prudente de su parte simplemente configurar una unidad de intercambio y recrear una imagen de la instancia ec2 en ejecución.
Una solución simple para ejecutar swap
en EC2
imágenes es ejecutar swap
comprimido con lz4
in ram
with zram-init
.
Esta solución no tomar ram
distancia de la host
:
zswap
que proporciona memoria caché RAM comprimida sobre un archivo / disco de intercambio normal: wiki.archlinux.org/index.php/zswap . Consulte cnx-software.com/2018/05/14/… para obtener más información sobre zram.