Cómo hacer un benchmark de WebServer con Apache Bench en Ubuntu 18.04

27 feb 2021 5 min di lettura
Cómo hacer un benchmark de WebServer con Apache Bench en Ubuntu 18.04
Indice dei contenuti

Introducción

Apache Bench es una herramienta que se utiliza para medir el rendimiento de un servidor web, aunque tiene "Apache" en su nombre, en realidad se puede utilizar para probar cualquier tipo de servidor web. En este tutorial, seguiremos los pasos para usar Apache Bench y cómo interpretar su informe de rendimiento de un servidor web. Apache Bench funciona enviando cantidades variables de solicitudes HTTP al servidor web y registrando los tiempos de respuesta. Puede decirle cuánta congestión puede manejar el servidor antes de que se abrume y disminuya el rendimiento.

Utilice la cuenta root o un usuario con privilegios de sudo.

Si su intención es comparar el servidor de forma remota, siga leyendo, de lo contrario, omita el primer párrafo "Conexión al servidor" y lea el siguiente.

Conexión al servidor

Para acceder al servidor, necesita conocer la dirección IP. También necesitará su nombre de usuario y contraseña para la autenticación. Para conectarse al servidor como root, escriba el siguiente comando:

ssh root@IP_DEL_SERVER

A continuación, deberá ingresar la contraseña del usuario root.

Si no está utilizando el usuario root, puede iniciar sesión con otro nombre de usuario utilizando el mismo comando, luego cambie root a su nombre de usuario:

ssh nome_utente@IP_DEL_SERVER

Luego se le pedirá que ingrese su contraseña de usuario.

El puerto estándar para conectarse a través de ssh es 22, si su servidor usa un puerto diferente, deberá especificarlo usando el parámetro -p, luego escriba el siguiente comando:

ssh nome_utente@IP_DEL_SERVER -p PORTA

Cómo instalar Apache Bench

Apache Bench es parte del apache2-utils, que se puede instalar con el administrador de paquetes del sistema. Ejecute estos comandos.

Si Apache aún no está instalado en su sistema, instálelo con el siguiente comando:

sudo apt install apache2

Instale el paquete necesario para usar Apache Bench:

sudo apt install apache2-utils

Cómo utilizar Apache Bench

Para utilizar Apache Bench, debe conocer su nombre de host.

Para ver su nombre de host, escriba el siguiente comando:

hostname

Debería ver un mensaje de salida con su nombre de host, por ejemplo:

TEST-SERVER-1

La sintaxis más simple para usar Apache Bench es la siguiente:

ab TEST-SERVER-1/

Debería ver un mensaje de salida similar al siguiente:

This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking TEST-SERVER-1 (be patient).....done


 Server Software: Apache/2.4.37
 Server Hostname: TEST-SERVER-1
 Server Port: 80

 Document Path: /Document Length: 328 bytes

 Concurrency Level: 1
 Time taken for tests: 0.003 seconds
 Complete requests: 1
 Failed requests: 0
 Non-2xx responses: 1
 Total transferred: 508 bytes
 HTML transferred: 328 bytes
 Requests per second: 314.17 [#/sec] (mean)
 Time per request: 3.183 [ms] (mean)
 Time per request: 3.183 [ms] (mean, across all concurrent requests)
 Transfer rate: 155.86 [Kbytes/sec] received

 Connection Times (ms)
 min mean[+/-sd] median max
 Connect: 0 0 0.0 0 0
 Processing: 2 2 0.0 2 2
 Waiting: 2 2 0.0 2 2
 Total: 2 2 0.0 2 2

ab requiere la barra inclinada después del nombre de hostname/. Este comando básico no es particularmente útil sin opciones adicionales, así que incluyamos algunos parámetros.

Apache Bench tiene muchas opciones disponibles, pero algunas de las más útiles son:

  • -n (número): se usa para especificar el número de solicitudes que ab debe enviar a apache
  • -t (tiempo de espera): se usa para especificar (en segundos) cuánto tiempo ab debe continuar enviando solicitudes
  • -c (concurrente): se usa para especificar el número de solicitudes concurrentes que ab debe realizar

Puede probar estas opciones para simular un tráfico más realista para su servidor web y observar cómo se comporta bajo diversas tensiones, por ejemplo:

ab -t 10 -n 10000 -c 100 TEST-SERVER-1/

Este comando comparará nuestro servidor web durante 10 segundos, enviando un máximo de 10,000 solicitudes en total y enviando simultáneamente 100 de esas solicitudes.

Consideraciones

Hay algunas cosas a considerar al usar Apache Bench. Cuando un servidor recibe miles de solicitudes HTTP de una sola fuente en segundos, muchos firewalls interpretarán esto como un ataque de denegación de servicio e intentarán bloquear las conexiones repetidas por un tiempo. Solo recomendamos usar Apache Bench en una red local y probar en el host que controlas. Sin embargo, esta no es una simulación perfecta de tráfico real. Cuando se conectan a un servidor web en algún lugar del mundo, los usuarios tendrán diferentes niveles de latencia y hops (la ruta que toma su conexión al servidor web), que juegan un papel importante en la velocidad percibida de su sitio web. Su máquina de prueba (el sistema desde el que está ejecutando el comando ab) podría ser un cuello de botella. Si sospecha que su sistema no tiene los recursos necesarios para iniciar esta gran cantidad de conexiones, puede verificar usando el top para monitorear el uso de CPU y memoria mientras ab está ejecutando la prueba. Si recibe un Connection timed out, es probable que un firewall haya bloqueado sus conexiones o que el servidor Apache se haya saturado y no haya podido manejar más solicitudes.

Interpretación de los resultados de Apache Bench

Las primeras líneas solo proporcionan información general sobre el servidor web. La información útil comienza con la línea Time taken for tests. Time taken for tests indica cuánto tiempo tardó el comando ab en completar la prueba. Si no hemos especificado un tiempo de espera, esta línea le dirá cuánto tiempo tardó en completar el envío de la cantidad especificada de solicitudes. Después de aplicar optimizaciones a su servidor web, debería ver una reducción en el tiempo necesario para completar las pruebas (cuando no especifica un tiempo de espera). Complete requests indica cuántas de las solicitudes se enviaron y devolvieron correctamente. Failed requests indica cuántas solicitudes fallaron. Obviamente querrá ver un número muy pequeño, idealmente cero. Si esta línea informa algunas solicitudes fallidas, podría indicar que el servidor web se ha visto abrumado y no puede responder a todas las solicitudes a tiempo.

Total transferred y HTML transferred informa cuántos datos, en bytes, se han enviado al servidor web. Requests per second es el promedio de cuántas solicitudes pudo manejar el servidor web en un segundo. Es útil para determinar el rendimiento de su servidor web cuando muchos usuarios acceden a él al mismo tiempo. Time per request es el tiempo promedio que se tarda en procesar una solicitud. Los valores se expresan en milisegundos. El valor de la segunda time per request simplemente se multiplica por el valor de simultaneidad. Transfer rate es la velocidad a la que pudo transferir datos, lo que no debería provocar ningún tipo de cuello de botella en una red local. Si está probando en Internet, los límites de enrutamiento y ancho de banda pueden afectar este valor mucho antes que el propio Apache. La Connection Times (ms) enumera los tiempos de respuesta para las diferentes etapas de las solicitudes HTTP.

Connect indica el tiempo que tarda ab en establecer una conexión con el servidor web. Processing es la cantidad de tiempo que le toma a Apache procesar las solicitudes. Dado que ab no puede medirlo, solo registra cuánto tiempo está abierta una conexión después de que se inicia. Waiting es el tiempo que ab tiene que esperar entre el envío de una solicitud y la recepción de una respuesta del servidor web. Total indica el tiempo total transcurrido desde que se inició una conexión con el servidor, se recibió una respuesta y finalmente se cerró la conexión. La última Percentage Apache Bench le brinda una visión más precisa del tiempo de respuesta promedio del servidor web al ordenar los tiempos de conexión en porcentajes.

Conclusión

En este artículo hemos visto cómo instalar Apache Bench en Ubuntu 18.04 LTS y usarlo para probar el rendimiento de un servidor web. También aprendimos cómo interpretar la salida de Apache Bench. Una vez que haya optimizado aún más su servidor web, ejecute Apache Bench nuevamente y espere ver mejores resultados de rendimiento si se han realizado mejoras.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.