En este momento estás viendo Script para la optimización del servidor

Script para la optimización del servidor

Limpieza del servidor

Ocasionalmente, nos podemos encontrar que alguna aplicación no funciona correctamente debido que no se libera memoria cacheada. Esto puede ser un problema grave en un servidor. Vamos a ver un «scriptbash», al que llamaremos «LimpiezaServer.sh», para realizar el trabajo rápidamente.

Sumario

  • Consideraciones previas
  • Comprobar estado de la memoria
  • Limpieza de la memoria cache y swap
    • Liberar memoria cache, inodos y dentries
    • Liberar la swap
  • Codigo del «scriptbash»

Consideraciones previas

Para mejorar el rendimiento de nuestro servidor, conviene liberar la carga de la RAM de los espacios de memoria ocupados por los «inodos» y «dentries» que ya no son necesarios. Vamos a ver un «scriptbash» que resuelve este problema de forma sencilla. Vemos algunos conceptos y luego aporto el código para que solo tengas que copiar y pegar si lo quieres probar.

Un «inodo» es una estructura de datos que almacena información sobre un fichero de nuestro sistema de ficheros. Un «inodo» no tiene nombre y se identifica con un número entero. Cuando el sistema utiliza un fichero, el «inodo» de ese fichero específico se almacena en la RAM, ocupando espacio.

Consulta de inodos

Un «dentry» es una estructura de datos que representa un directorio. Estas estructuras se usan para crear una caché de memoria que representa la estructura de ficheros en un disco. También consume espacio de la RAM.

La caché de la página es un espacio asignado en la memoria RAM para facilitar la rápida apertura de aquellos programas que ya se han abierto previamente, y que aún están presentes en la memoria.

Estructura

Como es obvio, vaciar estos espacios de memoria mejorará el rendimiento del servidor.

Si efectúas una limpieza de «inodos», «dentries» y «cache» en un servidor donde se estén ejecutando escrituras intensivas a disco, existe el riesgo de que estemos vaciando datos de la caché antes de que lleguen al disco. En este caso ten en cuenta la programación del trabajo.

Comprobar estado de la memoria

Primero comprobaremos el estado de la memoria ejecutando el comando «free»

Limpieza de un servidor

Limpieza de la memoria cache y swap

En primer lugar tendremos que deshabilitar el servicio «httpd».

Para liberar memoria cache, inodes y dentries, tenemos varias opciones:

Si queremos eliminar cache ejecutaremos

sync; echo 1 > /proc/sys/vm/drop_caches

Si queremos eliminar inodes y dentries ejecutaremos

sync; echo 2 > /proc/sys/vm/drop_caches

Si queremos eliminar cache, inodes y dentries ejecutaremos

sync; echo 3 > /proc/sys/vm/drop_caches

Liberar la swap

Para liberar la swap usamos el comando «swapoff». Seguidamente, para terminar, habilitamos la swap y el servicio «httpd».

Vistas las explicaciones vamos con el código del script. Solo tienes que copiar y pegar el siguiente código en un fichero de tu sistema y darle permisos de ejecución. Como lo hago en remoto desde una máquina Ubuntu Desktop, me logueo con ssh y usuario y escalo privilegios en el servidor.

Conexión ssh con el server

Al ejecutar el «script» obtengo la siguiente salida

Ejecución de «LipiezaServer.sh»

Codigo del «scriptbash» LimpiezaServer.sh

#!/bin/bash
# Script para realizar una optimización del servidor.
# Este programa ha sido creado por Francisco Javier Izquierdo Hidalgo.
# Este programa es software libre, puedes redistribuirlo y / o
# modificarlo bajo los términos de la Licencia Pública General de GNU
# publicado por la Free Software Foundation, ya sea la versión 2
# de la Licencia, o (a su elección) cualquier versión posterior.

# Este programa se distribuye con la esperanza de que sea útil,
# pero SIN NINGUNA GARANTÍA, sin siquiera la garantía implícita de
# COMERCIABILIDAD o APTITUD PARA UN PROPÓSITO EN PARTICULAR. Ver el
# GNU General Public License para más detalles.

echo "========================================================="
echo " "
echo "                 Limpieza del servidor"
echo " "
echo "========================================================="
echo "                  by Javier Izquierdo"
sleep 5s
echo " "
echo "   Vamos a realizar un mantenimiento al servidor"
echo " "
echo  "Comprobando el estado de la memoria..."
echo " "
free
echo " "
echo "   !!!! Comprobación completada ¡¡¡"

echo " "
sleep 2s; echo "Limpieza de memoria cache y swap";
echo " "
sleep 2s; echo "Deshabilitando HTTP..."
killall -KILL httpd
echo " "
echo "    !!! Http deshabilitado ¡¡¡"
echo " "
sleep 5s; echo "Deshabilitando swap..."
swapoff -a
echo " "
echo "    !!!  Swap deshabilitada ¡¡¡"
echo " "
sleep 5s; echo "Liberando page-caches, dentries e  inodes..."
sync; echo 3 > /proc/sys/vm/drop_caches
echo " "
echo "      !!! Server liberado ¡¡¡"
echo " "
sleep 2s; echo "Habilitando la swap..."
swapon -a
echo " "
echo "    !!! Swap habilitada ¡¡¡"
echo " "
sleep 2s; echo "Habilitando http..."
service httpd start
echo " "
echo "     !!! Servicio httpd habilitado ¡¡¡"
echo " "
sleep 2s; free
echo " "
echo "              ==================="
echo "              SERVIDOR OPTIMIZADO"
echo "              ==================="
echo " "

Si tienes algún comentario que hacer sobre este artículo, al pie del post tienes un formulario para hacerlo.

Si quieres contactar conmigo por cualquier otro asunto relacionado con el sitio, en la página de contacto, tienes un formulario más adecuado.

Y para suscribirte y recibir las novedades publicadas, tienes un enlace en pie de la página o desde aquí mismo.

Deja una respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.