sudo: Jack of all trades, master of some

Squid, algunos conceptos erróneos y la realidad

5 comentarios

Squid es una de esas aplicaciones omnipresentes en nuestros entornos de redes, es un servidor proxy usado por muchos con varios fines, entre ellos: aumentar la velocidad de servidores web, como cache web/DNS o controlar el tráfico hacia internet de los usuarios de una empresa.
Muchos de nosotros lo usamos cotidianamente y seguramente la gran mayoría hemos tropezado con muchas situaciones de malas configuraciones y conceptos erróneos, dando al traste con afectaciones del servicio, usuarios descontentos, etc. En esta entrada quisiera discutir dos de las opciones de configuración que quizá sean de las más problemáticas de entender y de implementar en Squid: cache_dir y cache_mem

En el parámetro cache_dir se especifica qué espacio del disco duro utilizará Squid para almacenar la cache, ejemplo:

cache_dir ufs /var/spool/squid 2048 16 256

En el ejemplo anterior se utilizan 2GB (2048MB) de espacio de disco duro en el directorio /var/spool/squid.

Dado el uso que tiene este parámetro de configuración pudiéramos pensar fácilmente que mientras más espacio especifiquemos, mayor la cache y por tanto mayor satisfacción para nuestros usuarios (más rapidez del contenido web estático), sin embargo la realidad es otra.

Es muy recomendable dedicar una partición entera para utilizarse como almacenamiento de la cache de Squid y de modo general no es recomendable utilizar todo el espacio disponible, entre las razones están:

Squid no es muy tolerante en situaciones de insuficiente espacio de disco. Squid usa espacio extra para ciertas operaciones por lo que es muy recomendable dejar espacio para estas o se pudiera entrar en un ciclo de error-reinicio.
Otra de las razones es la fragmentación, los sistemas de archivos realizan tareas para evitar la fragmentación y utilizan espacio de disco duro para optimizar la colocación de los archivos, si el disco está lleno, se haría muy difícil o imposible la optimización y por consiguiente el sistema de archivos padecerá de fragmentación y daría al traste con cuellos de botella y otras complicaciones engorrosas.

Al contrario de lo que muchos piensan, el parámetro cache_mem no especifica la memoria máxima del proceso, solamente indica qué memoria usará Squid para cachear contenido web más solicitado. La memoria real de Squid depende grandemente del tamaño especificado en el parámetro cache_dir y la carga de las peticiones entrantes. Al reducir este parámetro usualmente se disminuirá el tamaño en memoria del proceso, pero no necesariamente.

¿Entonces qué valores seguros puedo utilizar en estos parámetros?

Squid utiliza aproximadamente 10MB de RAM por GB del total del valor de cache_dir, más el valor de cache_mem y alrededor de 10-20MB adicionales. Es recomendable tener al menos el doble de esta cantidad de RAM física disponible en el servidor. La RAM extra recomendada es usada por el sistema operativo para mejorar el rendimiento de entrada/salida (I/O) y por otras aplicaciones o servicios que estén corriendo en el servidor, incluso cuando solamente esté ejecutándose Squid como el único servicio TCP.
Si se tiene un servidor de poca memoria y un disco duro grande, no necesariamente podemos utilizar todo el espacio, ya que como la cache utiliza la memoria disponible, sería insuficiente forzando a Squid utilizar memoria swap afectando así el rendimiento. Un valor alto del parámetro cache_dir y una insuficiente memoria física (RAM+Swap) causaría que Squid se detenga completamente.
En resumen: la solución para poder hacer uso de grandes caches es tener más memoria RAM física.

Espero que mis modestas apreciaciones sean de utilidad.

Referencias:

Comentarios desactivados
  1. Rafael Castro 6 años atrás

    Y todavia sequimos usando Squid??? Ñoo, yo pensaba que eso no se usaba… jajajaja, broma.

    Lo cierto es que muchas veces nos pasamos del limite. Algunos admins de sistemas ponen tantas reglas y restricciones en la configuracion de Squid que despues es imposible navegar.

    Hay algo que saber, muchas veces uno de los problemas por el cual Squid es lento o la navegacion mediante el mismo es imposible es debido a malas configuraciones en los DNS. Por lo menos es uno de los problemas mas comunes que veo, malas configuraciones DNS que hacen las resoluciones de nombres de dominios SUPER LENTA.

    Seria bueno un articulo en el cual se explique un poco sobre DNS.

    Saludos.

  2. Víctor Manuel 6 años atrás

    Como poner cuotas con squid de windows????

    1. @Víctor Manuel

      debes tener Perl para que funcione correctamente en Windows.

  3. Alex Pérez 5 años atrás

    Saludos a todos, tengo un inconveniente con la navegación, a veces funciona y a veces no, me he percatado que el uso de la memoria swap es 0, tengo un Centos 6 instalado, por favor me pueden ayudar como puedo hacer que squid o el mismo sistema operativo haga uso de la memoria swap.

    [root@srv-abc-fw vm]# free
    total used free shared buffers cached
    Mem: 1631984 909256 722728 0 221728 472828
    -/+ buffers/cache: 214700 1417284
    Swap: 4194296 0 4194296

    Gracias …

    1. @Alex Pérez

      Pudieras empezar por poner un fragmento de la configuración de tu squid.