Site is under maintenance mode. Please wait few min!
Saltar al contenido

Construir aplicaciones web para móviles con React Native Web

marzo 4, 2020

 

Introducción

Una de las maneras más fáciles de hacer que su servidor de mayor capacidad de respuesta, y proteger contra errores de falta de memoria en su aplicación, es añadir un poco de espacio de intercambio. Intercambiar es un área en una unidad de almacenamiento donde el sistema operativo puede almacenar temporalmente los datos que ya no puede mantener en la memoria.

Esto le da la capacidad de aumentar la cantidad de información que el servidor puede guardar en su memoria de trabajo, con algunas advertencias. La lectura y la escritura en intercambio es más lento que el uso de la memoria, pero puede proporcionar una red de seguridad bueno para cuando el servidor tiene poca memoria.

Sin intercambio, un servidor que se ejecuta fuera de la memoria puede empezar a matar a las aplicaciones para liberar memoria, o incluso bloquearse. Esto puede provocar la pérdida de datos o la experiencia no salva el tiempo de inactividad. Para garantizar el acceso de datos fiable, algunas aplicaciones requieren de intercambio de funcionar.

En esta guía, vamos a cubrir cómo crear y habilitar un archivo de intercambio en un servidor CentOS 7.

A pesar de intercambio se recomienda generalmente para los sistemas que utilizan discos duros de spinning tradicional, utilizando intercambio con los SSD pueden causar problemas con la degradación de hardware con el tiempo. Debido a esta consideración, no recomendamos que permite intercambio en digitalocean o cualquier otro proveedor que utiliza almacenamiento SSD. Si lo hace, puede afectar a la fiabilidad del hardware subyacente para usted y sus vecinos.

Si necesita mejorar el rendimiento de su servidor, le recomendamos actualizar su droplet. Esto dará lugar a mejores resultados en general y disminuirá la probabilidad de contribuir a problemas de hardware que pueden afectar a su servicio.

Requisitos previos

Antes de comenzar con esta guía, hay algunos pasos que se tienen que hacer en primer lugar.

Tendrá 7 servidor instalado y configurado con un usuario no root que tiene privilegios sudo un CentOS. Si no lo ha hecho todavía, se puede ejecutar a través de los pasos 1-4 en las CentOS 7 guía de configuración inicial del servidor para crear esta cuenta.

vez que tenga su usuario no root, se puede utilizar para SSH en el servidor CentOS y continuar con la instalación del archivo de intercambio.

comprobar el sistema de intercambio de información

Antes de empezar, hay que echar un vistazo a nuestro servidor de almacenamiento de ver si ya tenemos un poco de espacio de intercambio disponible. Si bien podemos tener múltiples archivos de intercambio o particiones de intercambio, uno debe ser lo suficientemente general.

podemos ver si el sistema tiene cualquier intercambio configurado mediante el uso de swapon, una utilidad de intercambio de propósito general. Con la bandera -s, swapon mostrará un resumen del uso del intercambio y la disponibilidad en nuestro dispositivo de almacenamiento:

swapon -s

Si no se devuelve nada por el comando, a continuación, el resumen estaba vacío y no existe ningún archivo de intercambio.

Otra forma de comprobar el espacio de intercambio es con la herramienta gratuita, que nos muestra el uso de memoria total del sistema. Podemos ver nuestra memoria actual y el uso del intercambio (en megabytes) escribiendo:

free -m
total used free shared buffers cached
Mem: 3953 315 3637 8 11 107
-/+ buffers/cache: 196 3756
Swap: 0 0 4095

Como se puede ver, nuestro espacio de intercambio total en el sistema es 0. Esto coincide con lo que vimos con swapon.

Compruebe espacio de almacenamiento disponible

La forma típica de asignar espacio de intercambio es utilizar una partición independiente que se dedica a la tarea. Sin embargo, la alteración del esquema de partición no siempre es posible debido a limitaciones de hardware o software. Afortunadamente, sólo podemos crear fácilmente un archivo de intercambio que resida en una partición existente.

Antes de hacer esto, debe ser consciente de nuestro uso de la unidad actual. Podemos obtener esta información escribiendo:

df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 59G 1.5G 55G 3% /
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 2.0G 8.3M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup

Nota: la bandera -h simplemente le dice a dh información de la unidad de salida en un formato de lectura-humana de usar. Por ejemplo, en lugar de dar salida a la cantidad prima de bloques de memoria en una partición, df -h nos dirá el uso del espacio y la disponibilidad de M (megabytes) o G (para gigabytes).

Como se puede ver en la primera línea, nuestra partición de almacenamiento cuenta con 59 gigabytes disponibles, por lo que tenemos un poco de espacio para trabajar. Tenga en cuenta que se trata de un fresco, ejemplo VPS de tamaño medio, por lo que su uso real podría ser muy diferente.

Aunque hay muchas opiniones sobre el tamaño apropiado de un espacio de intercambio, que realmente depende de sus requisitos de aplicación y sus preferencias personales. Generalmente, una cantidad igual a o el doble de la cantidad de memoria en el sistema es un buen punto de partida.

Desde mi sistema cuenta con 4 gigabytes de memoria, y la duplicación de que tomaría un pedazo más grande de mi espacio de almacenamiento que estoy dispuesto a desprenderse de, voy a crear un espacio de intercambio de 4 gigabytes para que coincida con la memoria de mi sistema.

Crear un archivo de intercambio

Ahora que sabemos que nuestro espacio de almacenamiento disponible, podemos ir sobre la creación de un archivo de intercambio dentro de nuestro sistema de ficheros. Vamos a crear un archivo llamado archivo de intercambio en nuestro directorio raíz (/), aunque se puede nombrar el archivo algo más si lo prefiere. El archivo debe asignar la cantidad de espacio que queremos para nuestro archivo de intercambio, y debe ser creada en un bloque contiguo.

La mejor manera de hacer esto es utilizar la utilidad dd. Este comando creará un archivo de 4 gigabytes:

sudo dd if=/dev/zero of=/swapfile count=4096 bs=1MiB

Después de introducir su contraseña para Autorizar privilegios sudo, se creará el archivo de intercambio. Esto puede tardar unos momentos, a continuación, el símbolo será devuelto. Podemos comprobar que la cantidad correcta de espacio estaba reservado para intercambio mediante el uso de ls:

ls -lh /swapfile
-rw-r--r-- 1 root root 4.0G Oct 30 11:00 /swapfile

Como se puede ver, nuestro archivo de intercambio se creó con la cantidad correcta de espacio reservado.

Habilitar un archivo de intercambio

En este momento, se creó nuestro archivo, pero nuestro sistema no sabe que esto se supone que se utilizará como intercambio. Tenemos que decirle a nuestro sistema para dar formato a este archivo como swap y luego activarlo.

Antes de hacer eso, debemos ajustar los permisos en nuestro archivo de intercambio de forma que no pueda ser leída por alguien además de la cuenta root. Permitiendo que otros usuarios puedan leer o escribir en este archivo sería un gran riesgo para la seguridad. Podemos bloquear los permisos con chmod:

sudo chmod 600 /swapfile

Esto restringirá tanto los permisos de lectura y escritura a la cuenta root. Podemos comprobar que el archivo de intercambio tiene los permisos correctos mediante el uso de ls -lh nuevo:

ls -lh /swapfile
-rw------- 1 root root 4.0G Oct 30 11:00 /swapfile

Ahora que nuestro archivo de intercambio es más seguro, podemos decirle a nuestro sistema para configurar el espacio de intercambio para su uso escribiendo:

sudo mkswap /swapfile
Setting up swapspace version 1, size = 4194300 KiB
no label, UUID=b99230bb-21af-47bc-8c37-de41129c39bf
Nuestro archivo de intercambio

ya está listo para ser utilizado como un espacio de intercambio. Podemos empezar a utilizarlo escribiendo:

sudo swapon /swapfile

Para verificar que el procedimiento ha sido exitoso, podemos comprobar si nuestros informes del sistema de espacio de intercambio ahora:

swapon -s
Filename Type Size Used Priority
/swapfile file 4194300 0 -1

Esto confirma salida que tenemos un nuevo archivo de intercambio. Podemos utilizar la utilidad libre de nuevo para corroborar nuestros resultados:

free -m
total used free shared buffers cached
Mem: 3953 315 3637 8 11 107
-/+ buffers/cache: 196 3756
Swap: 4095 0 4095

Nuestro intercambio se ha establecido con éxito, y nuestro sistema operativo comenzará a utilizar según sea necesario.

Hacer que el archivo de intercambio de archivos de intercambio permanente

Nuestro está activado en este momento, pero cuando reinicio, el servidor no permitirá automáticamente el archivo para su uso. Podemos cambiar esto modificando el archivo fstab, que es una tabla que gestiona los sistemas de archivos y particiones.

Editar el archivo con privilegios sudo en su editor de texto:

sudo nano /etc/fstab

En la parte inferior del archivo, es necesario agregar una línea que va a indicar al sistema operativo para utilizar automáticamente el archivo de intercambio que creó:

/swapfile swap swap sw 0 0

Cuando terminado de añadir la línea, puede guardar y cerrar el archivo. El servidor comprobará este archivo en cada arranque, por lo que el archivo de intercambio estará lista para su uso a partir de ahora.

ajustar su configuración de intercambio (Opcional)

Hay algunas opciones que puede configurar que tendrá un impacto en el rendimiento del sistema cuando se trata de intercambio. Estas configuraciones son opcionales en la mayoría de los casos, y los cambios que realice dependerá de sus necesidades de aplicación y sus preferencias personales.

swappiness

El swappiness parámetro determina la frecuencia con sus datos permutas sistema de memoria para el espacio de intercambio. Este es un valor entre 0 y 100 que representa el porcentaje de uso de la memoria que activará el uso de intercambio.

Con valores cercanos a cero, el sistema no va a intercambiar datos a la unidad a menos que sea absolutamente necesario. Recuerde, las interacciones con el archivo de intercambio son “caros”, ya que son mucho más lento que la interacción con la memoria, y esta diferencia en la velocidad de lectura y escritura puede causar una reducción significativa en el rendimiento de una aplicación. Diciendo que el sistema no confiar en el intercambio tanto en general hará que su sistema más rápido. Valores

que están más cerca de 100 tratarán de poner más datos en canje en un esfuerzo por mantener más memoria libre. Dependiendo de perfil de memoria de sus aplicaciones, o lo que usted está utilizando su servidor para, esta podría ser la mejor opción en algunos casos.

podemos ver el valor actual swappiness al leer el fichero de configuración swappiness:

cat /proc/sys/vm/swappiness
30

CentOS 7 por defecto a un entorno swappiness de 30, que es un término medio justo para la mayoría de los ordenadores de sobremesa y servidores locales. Para un sistema VPS, probablemente nos queremos mover más cerca de 0.

Podemos establecer el swappiness a un valor diferente utilizando el comando sysctl. Por ejemplo, para establecer el swappiness a 10, podríamos escribir:

sudo sysctl vm.swappiness=10
vm.swappiness = 10

Esta configuración se mantendrá hasta el siguiente reinicio. Para realizar el ajuste persisten entre reinicios, podemos añadir la línea de salida hacia nuestro fichero de configuración sysctl:

sudo nano /etc/sysctl.conf

Añadir su entorno swappiness a la parte inferior del archivo:

vm.swappiness = 10

Cuando haya terminado de agregar la línea, se puede guardar y cerrar el archivo. El servidor ahora se establecerá automáticamente el swappiness al valor declarado que en cada arranque.

caché Presión

Otro valor relacionado que es posible que desee modificar es la vfs_cache_pressure. Este ajuste afecta el almacenamiento de entradas especiales del sistema de ficheros de metadatos. Constantemente leyendo y refrescante esta información es generalmente muy costoso, por lo que el almacenamiento en la caché durante más tiempo es excelente para el rendimiento del sistema.

Se puede ver el valor actual de esta presión caché mediante la consulta del nuevo sistema de ficheros proc:

cat /proc/sys/vm/vfs_cache_pressure
100

como está configurado actualmente, nuestros elimina del sistema i-nodo de información de la caché demasiado rápido. Podemos establecer esto en un ambiente más conservador, como el 50, mediante el uso de sysctl:

sudo sysctl vm.vfs_cache_pressure=50
vm.vfs_cache_pressure = 50

Una vez más, esto sólo es válida para la sesión actual. Podemos cambiar eso mediante la adición a nuestro archivo de configuración, como lo hicimos con nuestro entorno swappiness:

sudo nano /etc/sysctl.conf

En la parte inferior, agregue la línea que especifica el nuevo valor:

vm.vfs_cache_pressure = 50

Cuando haya terminado de agregar la línea, puede guardar y cierre el archivo. El servidor ahora se ajusta automáticamente la presión de caché para el valor declarado que en cada arranque.

Conclusión

Siguiendo los pasos de esta guía, se le han dado su servidor un respiro en términos de uso de la memoria. El espacio de intercambio es increíblemente útil para evitar algunos problemas comunes.

Si está ejecutando en OOM (sin memoria) errores, o si encuentra que su sistema es incapaz de utilizar las aplicaciones que necesita, la mejor solución es optimizar sus configuraciones de aplicaciones o actualizar el servidor. Sin embargo, la configuración de espacio de intercambio puede darle más flexibilidad y puede ayudar a comprar que el tiempo en el servidor menos potente.