Buscar

Linux: Ajustar el número de conexiones simultaneas en Apache

En muchas ocasiones es necesario ajustar parámetros de la configuración de un servicio dependiendo de la carga y uso del mismo una vez ya está en marcha.

Un ejemplo de ello es Apache.

Linux: Ajustar el número de conexiones simultaneas en Apache 
Dentro de la configuración de Apache disponemos del parámetro MaxClients:

 cat /etc/httpd/conf/httpd.conf | grep MaxClients

Ejemplo:

Linux: Ajustar el número de conexiones simultaneas en Apache

Este parámetro define el máximo de conexiones simultaneas al servicio Web.

Para averiguar si MaxClients está correctamente configurado, podemos utilizar la herramienta netstat.

Con netstat podemos ver las conexiones al servidor y su estado.

Si el estado es TIME_WAIT significa que la conexión no está establecida y queda a la espera.

Ejemplo:

date;netstat -ant | grep ":80" | grep TIME_WAIT | wc -l

Linux: Ajustar el número de conexiones simultaneas en Apache

La salida del comando de netstat, será filtrada por grep para mostrar solo las conexiones al puerto 80 con estado TIME_WAIT i con wc -l contamos el número de conexiones.

Si después de ejecutar el comando en varias ocasiones, disponemos de resultados similares deberíamos augmentar el valor de MaxClients si disponemos de recursos suficientes en el servidor:

Según los datos del ejemplo:

MaxClients = 256
Conexiones a la espera al puerto 80 = 608

4 comentarios:

  1. hola amigo, eso quiere decir que hay un total de 256 + 608 conexiones con el apache??

    ResponderEliminar
  2. Los datos son solo un ejemplo.

    Según el ejemplo:

    - 256 es el numero máximo de conexiones que soporta Apache (Según lo que tengas en el fichero de configuración, en el ejemplo, 256).
    - 608 es el número de conexiones que están a la espera.

    Esto significa que "MaxClients = 256", limita el número de conexiones a 256, por lo tanto el resto de conexiones han de esperar a que se libere alguna. Concretamente hay 608 a la espera.

    ResponderEliminar
  3. Hola he tenido un problema en mi servidor dedicado, y es que cada vez que se acerca la cantidad de 250 personas aproximadamente en linea, segun el google analytics en tiempo real, mi servido como que se colapsa y se pone lenta la conexion hasta se cae la conexion al sitio web y nunca sube mas de esa catidad de usuarios en linea, pero cuando veo el rendimiento del servidor dedicado que es de 8gb ram muestra 10% de uso, el cpu: 5% de uso y el disco duro en: 1.99% de uso.
    Me puedes ayudar? no hallo que hacer, será que haciendo estos paso es la solución?

    ResponderEliminar
    Respuestas
    1. Hola Carlos,

      Gracias por participar en el blog.

      Te comento algunos puntos a verificar o a tener en cuenta:

      1) Servidor dedicado, no significa que tengas disponibles el 100% de los recursos físicos. Probablemente el servidor dedicado sea una máquina virtual (VM) y por lo tanto esté compartiendo recursos (CPU, RAM, HDD, etc) con otras VMs. La forma para verificarlo seria acceder al hipervisor (ESXi, Hyper-V, KVM, etc) y allí revisar el uso de recursos para cada VM.

      2) Límite de conexiones en el router/firewall:

      Puede que tengas un límite de conexiones en tu router o firewall, que a partir de cierto número de conexiones no se permitan conexiones nuevas.

      Si tienes acceso a tu router/firewall, podrás verlo.

      3) Como tienes un servidor dedicado, significa que tienes acceso total al sistema operativo y servicios del mismo, por lo tanto puedes revisar la configuración y cambiarla:

      3.1) Si la web es dinámica, por ejemplo: PHP+MySQL, revisa el límite de conexiones de Apache (lo tienes explicado en este post) y el límite de conexiones de MySQL.

      Para configurar el límite de conexiones en MySQL, en el siguiente ejemplo a: 400

      Fichero: /etc/my.cnf

      Contenido: set-variable=max_connections=400

      3.2) Revisa los logs de Apache, allí encontrarás el número de visitas real. Con Google Analytics solo ves las visitas que han ejecutado el JavaScript de Analytics.

      3.3) Tienes el valor de ulimit, valor global del servidor Linux donde están configurados el número máximo de ficheros simultanearnos.

      Con el comando ulimit -a, podrás ver los límites configurados.

      En caso de que no tengas acceso al hipervisor ni al firewall, empieza por el punto 3.

      Si el punto 3, lo tienes controlado, puedes probar de cambiar de proveedor de hosting.

      Espero haberte ayudado.

      ¡Un saludo!

      Xavi.

      Eliminar