Cómo comparar el servidor web con Apache Bench

Cómo comparar el servidor web con Apache Bench

Apache Bench es una herramienta utilizada para medir el rendimiento de un servidor web. A pesar de tener "apache" en su nombre, en realidad se puede usar para probar cualquier tipo de servidor web. En este tutorial, revisaremos los pasos para usar Apache Bench y cómo interpretar su informe sobre el rendimiento de un servidor web.

El banco Apache 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 sienta abrumado y el rendimiento disminuye.

En este tutorial aprenderás:

  • Cómo instalar el banco Apache
  • Cómo usar el banco Apache
  • Cómo interpretar los resultados del banco Apache
Cómo comparar el servidor web con Apache Bench

Requisitos y convenciones de software utilizados

Requisitos de software y convenciones de línea de comandos de Linux
Categoría Requisitos, convenciones o versión de software utilizada
Sistema Cualquier distribución de GNU/Linux
Software abundante
Otro Acceso privilegiado a su sistema Linux como root o a través del sudo dominio.
Convenciones # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominio
ps - Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado

Cómo instalar el banco Apache

Apache Bench es parte del paquete Apache2-Utils, que se puede instalar con el Administrador de paquetes de su sistema.
Para Ubuntu y otras distribuciones basadas en Debian, use el comando apt-get para instalarlo:

$ sudo apt-get install apache2-uTils 

Para centos/rhel ejecutar:

# DNF Instalar las herramientas HTTPD 


Cómo usar el banco Apache

Use el banco Apache con el comando AB. La sintaxis más básica es:

$ ab hostname/ 
NOTA
abundante Requiere la barra de corte en el nombre de host/dirección IP.

Este comando básico no es particularmente útil sin ninguna opción adicional, así que incluyamos algunas. 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 simultáneas de AB para hacer

Puede jugar con estas opciones para simular un tráfico más realista para su servidor web y observar cómo funciona bajo varias cantidades de estrés.

$ AB -T 10 -N 10000 -C 100 Nombre de host/ 

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

Consideraciones

Hay algunas cosas a considerar al usar el banco Apache. Cuando un servidor recibe miles de solicitudes HTTP de una sola fuente en cuestión de segundos, muchos firewalls interpretarán eso como un ataque de denegación de servicio e intentarán bloquear las conexiones repetidas durante un tiempo.

Solo recomendamos usar Apache Bench en una red local y probar contra hosts que controle. Aún así, esta no es una simulación perfecta del tráfico real.

Al conectarse a un servidor web en algún lugar del mundo, los usuarios tendrán diferentes niveles de latencia y lúpulo (la ruta que lleva su conexión al servidor web), que juegan papeles importantes en la velocidad percibida de su sitio web.
Además, 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 utilizando el comando superior para monitorear la CPU y el uso de la memoria mientras AB realiza su prueba.

Si obtienes un Tiempo de conexión agotado Error, sus conexiones probablemente fueron bloqueadas por un firewall o el servidor Apache se abrumó y no pudo manejar más solicitudes.

Resultados de la prueba de banco Apache

Cuando Apache Bench termine ejecutando su prueba, generará los resultados al terminal y debería verse algo así:

Terminado 882 Solicitudes Software del servidor: Apache/2.4.29 Nombre de host del servidor: --- Puerto del servidor: 80 Ruta del documento: / Documento Longitud: 4878 Bytes Nivel de concurrencia: 100 Tiempo tomado para las pruebas: 10.008 segundos Solicitudes completas: 882 Solicitudes fallidas: 0 Total Transferido: 4480560 Bytes HTML Transferido: 4302396 Solicitudes de bytes por segundo: 88.13 [#/sec] (media) Tiempo por solicitud: 1134.700 [MS] (media) Tiempo por solicitud: 11.347 [MS] (media, en todas las solicitudes concurrentes) Tasa de transferencia: 437.20 [KBYTES/SEC] Recibidos tiempos de conexión (MS) MIN Media [+/- SD] MEDIAN MAX CONNECT: 77 327 1008.3 89 7240 Procesamiento: 87 115 43.4 101 807 esperando: 86 112 39.1 100 604 Total: 168 442 1009.1 192 7373 Porcentaje de las solicitudes atendidas dentro de un cierto tiempo (MS) 50% 192 66% 202 75% 224 80% 268 90% 428 95% 1207 98% 3208 99% 7345 100% 7373 (solicitud más larga) 


Interpretando los resultados del banco Apache

La salida anterior contiene toda la información necesaria; Solo necesita saber qué significan estas diversas métricas para dar sentido a los resultados. Los revisaremos a todos en esta sección.

Resultados de la prueba de banco Apache

Las primeras líneas solo dan información general sobre el servidor web. La información útil realmente comienza con el Tiempo tomado para las pruebas línea.

Tiempo tomado para las pruebas informa cuánto tiempo tardó el comando AB para completar su prueba. Dado que especificamos -n 10 en nuestro comando AB, esta línea obviamente informará que la prueba tardó 10 segundos. Si no hubiéramos especificado un tiempo de espera, esta línea le dirá cuánto tiempo tardó en enviar el número especificado de solicitudes. Después de aplicar optimizaciones a su servidor web, debe ver una disminución en el tiempo tomado para que las pruebas se completen (al no especificar un tiempo de espera).

Solicitudes completas informa cuántas de las solicitudes fueron enviadas y devueltas con éxito.

Solicitudes fallidas informa cuántas de las solicitudes no pudieron completar. Obviamente, querrás ver un número muy pequeño, idealmente cero. Si esta fila informa algunas solicitudes fallidas, podría indicar que el servidor web estaba abrumado e incapaz de responder a todas las solicitudes a tiempo.

Total transferido y HTML transferido Las filas informan cuántos datos, en bytes, se enviaron al servidor web.

Solicitudes por segundo es el promedio de cuántas solicitudes el servidor web pudo manejar en un segundo. Es útil para determinar cómo funcionará su servidor web cuando muchos usuarios se inician sesión al mismo tiempo.

Tiempo por solicitud es cuánto tiempo, en promedio, se necesitó para procesar una solicitud. Los valores se dan en milisegundos, por lo que en nuestra salida de ejemplo el tiempo fue 1.1 segundo. El segundo tiempo por solicitud el valor simplemente se multiplica por el valor de concurrencia.

Ratio de transferencia es lo rápido que pudo transferir los datos, que no debería representar ningún tipo de cuello de botella en una red local. Si se prueban a través de Internet, las limitaciones de enrutamiento y ancho de banda podrían afectar este valor mucho antes de Apache en sí.

El Tiempos de conexión (MS) La sección enumera los tiempos de respuesta para diferentes etapas de las solicitudes HTTP.

Tiempos de conexión (MS) MIN Media [+/- SD] Media MAX Connect: 77 327 1008.3 89 7240 Procesamiento: 87 115 43.4 101 807 esperando: 86 112 39.1 100 604 Total: 168 442 1009.1 192 7373 

Conectar Indica cuánto tiempo le tomó a AB establecer una conexión con el servidor web.

Procesando es la cantidad de tiempo que Apache pasó procesando las solicitudes. Dado que AB no puede medir esto, solo registra la cantidad de tiempo que se abre una conexión después de ser iniciada.

Espera es cuánto tiempo AB tiene que esperar entre enviar una solicitud y recibir una respuesta del servidor web.

Total indica el tiempo total transcurrido al iniciar una conexión con el servidor, recibir una respuesta y finalmente cerrar la conexión.

La última métrica de Apache Bench ofrece una mirada más precisa al tiempo de respuesta promedio del servidor web mediante la clasificación de los tiempos de conexión en percentiles.

Porcentaje de las solicitudes atendidas dentro de un cierto tiempo (MS) 50% 192 66% 202 75% 224 80% 268 90% 428 95% 1207 98% 3208 99% 7345 100% 7373 (solicitud más larga) 


En nuestra salida de ejemplo anterior, el 50% de las solicitudes HTTP fueron manejadas y cerradas en solo 192 ms o menos. Este informe también indica que las respuestas que toman 7 segundos (solo hay dos de ellas) son atípicos, lo que hace que el tiempos de conexión Informar menos alarmante. El 90% de nuestras solicitudes HTTP se manejaron en menos de medio segundo.

Conclusión

En este artículo vimos cómo instalar el banco Apache y usarlo para probar el rendimiento de un servidor web. También aprendimos a interpretar la salida de Apache Bench, lo que nos permite determinar dónde están los cuellos de botella. Después de optimizar más su servidor web, ejecute Apache Bench nuevamente y espere ver mejores resultados de rendimiento, si realmente se han realizado mejoras.

Tutoriales de Linux relacionados:

  • Prueba de referencia de unidad USB en Linux
  • Cómo comparar el rendimiento del disco en Linux
  • Una introducción a la automatización, herramientas y técnicas de Linux
  • Cosas para instalar en Ubuntu 20.04
  • Cómo trabajar con la API REST de WooCommerce con Python
  • Mastering Bash Script Loops
  • Comparación de Linux Apache Prefork vs Worker MPMS
  • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
  • Analizador de registro de Linux Apache
  • ¿Con qué frecuencia tiene que reiniciar su servidor de Linux??