Facebook Twitter Google Digg Reddit Email Imprimir
Martes 16 de octubre de 2018
Santoral:
Eduvigis
Otros:
Día Mundial de la Alimentación
Día del Profesor
Semana:
42
Día año:
289/365 (79%)
U.F.:
27389.73
IPC:
0,3
Dolar:
683,7
Euro:
791,5
Bitcoin:
U$ 6447.3769322344
mindicador.cl
Time4VPS.EU - VPS hosting in Europe

Aproveche funcionalidad de Disco RAM

Mejore tiempos de respuesta para archivos temporales

Introducción

Existen muchas aplicaciones que utilizan archivos temporales, para comunicación entre procesos o como "spool" o cola. En algunos casos podemos mejorar tiempos de respuesta de la aplicación si utilizamos el disco RAM definido por defecto en muchas distribuciones Linux, centrándonos en el caso de CentOS.

Debemos tener presente, que su uso también dependerá de la RAM instalada y disponible en el sistema, dado que si se abusa, aumentaremos las necesidades de RAM, forzando al sistema a utilizar el área de swap, afectando el rendimiento general de nuestro servidor.

Descripción

Si miramos los discos definidos en nuestro sistema con el comando df -k, veremos un punto de montaje que seguramente no recordamos haberlo definido, se trara de /dev/shm.

df -k
Filesystem           1K-blocks    Used Available Use% Mounted on
/dev/mapper/vg_myserver-lv_root
                       5716804 4950788    475612  92% /
tmpfs                   775364     228    775136   1% /dev/shm
/dev/sda1               495844  122718    347526  27% /boot
tmpfs                  1048576      12   1048564   1% /tmp
/dev/sdb1              4128428 1979256   1939460  51% /home
/dev/sdb2              4128428 2225148   1693568  57% /var

Por defecto dicho espacio se define a la mitad de RAM disponible, la que se asigna en forma dinámica a medida que se requiere. Deberemos tener en consideración que todos los datos almacenados aquí desaparecen al momento de reiniciar el servidor, incluyendo todos los directorios definidos, por ello que se justifica como almacenamiento temporal, y si decidimos dejar un directorio para utilizar por alguna aplicación, deberemos asegurarnos de validar su existencia y crearlo en caso que no exista al momento de iniciar el servicio.

Lo que se busca es tener un acceso rápido, por una parte para encontrar el archivo, lo que se conoce como access time, relevante cuando se utilizan múltiples archivos de tamaño muy bajo (menor a los 256KB) y taza de transferencia, significativo cuando los archivos son de mayor tamaño.

Tenga presente que los datos se almacenan en RAM, por lo que el espacio utilizado puede perjudicar la operación del servidor.

Como muestra de rendimiento me limitaré les presento una comparativa de taza de transferencia obtenida con el comando dd, considerando un archivo del órden de 1 GB para evitar el efecto dado por el caché de disco utilizado por CentOS. Primeramente en un disco SATA convencional, un SSD y finalmente el disco RAM.

dd if=/dev/zero of=salida.dummy bs=16K count=64K
65536+0 records in
65536+0 records out
1073741824 bytes (1,1 GB) copied, 17,02761 s, 63 MB/s
rm salida.dummy cd /myssd dd if=/dev/zero of=salida.dummy bs=16K count=64K
65536+0 records in
65536+0 records out
1073741824 bytes (1,1 GB) copied, 2,30734 s, 465 MB/s
rm salida.dummy cd /dev/shm dd if=/dev/zero of=salida.dummy bs=16K count=64K
65536+0 records in
65536+0 records out
1073741824 bytes (1,1 GB) copied, 0,758608 s, 1,4 GB/s
rm salida.dummy # CONFIGURACION CON RAM DUAL-CHANNEL cd /dev/shm dd if=/dev/zero of=salida.dummy bs=16K count=64K
65536+0 records in
65536+0 records out
1073741824 bytes (1,1 GB) copied, 0,690483 s, 1,6 GB/s
rm salida.dummy

Recuerde ejecutar los comando rm salida.dummy indicados, para evitar dejar archivos basura en el sistema.

Uso Práctico: Sesiones PHP

Un buen uso que se le puede dar a éste tipo de filesystem, es el espacio de almacenamiento de las sesiones PHP.

Podemos modificar el archivo /etc/php.ini definiendo el directorio para almacenar la información de las sesiones simplemente como session.save_path = "/dev/shm", lo que puede ser adecuado si se manejan pocas sesiones, o mejor aun session.save_path = "/dev/shm/php/sessions", pero deberemos asegurarnos de crear dicho directorio, y cambiar sus permisos al iniciar apache, lo que podrímos incluir al final del archivo /etc/sysconfig/httpd como:

...
PHPSESSIONSDIR=/dev/shm/php/sessions
if [ ! -d $PHPSESSIONSDIR ]
then
  mkdir -p $PHPSESSIONSDIR
  chown -R apache:apache $PHPSESSIONSDIR
fi

Configuración

Tenemos la opción de modificar el tamaño definido por defecto, o incluso crear uno nuevo con los parámetros dados, mediante el archivo /etc/fstab. La opción size nos permite definir el tamaño máximo a utilizar, el que puede ser definido con los sufijos K para Kilobytes, M para Megabytes, G para Gigabytes o % donde se considera el porcentaje de la RAM del sistema.

...
tmpfs          /dev/shm               tmpfs   size=25%,defaults  0 0
tmpfs          /var/lib/php/session   tmpfs   uid=apache,mode=600,size=100M,defaults  0 0

Con ello definimos el espacio máximo de /dev/shm al 25% de RAM y el directorio /var/lib/php/session como un disco RAM de 100 MegaBytes con usuario apache como dueño y permisos 600, lo que podría ser una definición más limpia que el asegurar la creación del directorio en cada arranque. Eso si hay que procurar que el directorio exista y se encuentre vacío para que pueda ser montado.

Escrito por: Luis Hernán de la Barra, 29/09/2014

Generado por Sistema y almacenado en cache

Wyzer
Luis Hernán de la Barra
E-Mail:ldelabar@wyzer.cl
Web:www.wyzer.cl