English English French French Spanish Spanish German German
Geekflare cuenta con el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliados comprando enlaces en este sitio.
Comparte en:

¿Cómo realizar la evaluación comparativa del rendimiento del servidor web?

evaluación comparativa
Escáner de seguridad de aplicaciones web Invicti – la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

Sabes tu tiempo medio de respuesta del sitio web? ¿Sabe cuántos usuarios simultáneos puede manejar su sitio?

Las pruebas de carga son esenciales para que las aplicaciones web conozcan el sitio web capacidad. Si va a elegir el servidor web, una de las primeras cosas que debe hacer es realizar la prueba de carga y ver cuál funciona mejor para usted.

La evaluación comparativa puede ayudarlo a decidir;

  • Qué servidor web funciona mejor
  • Número de servidores que necesita para atender x número de solicitudes
  • Qué configuración le da los mejores resultados
  • Qué pilas de tecnología funcionan mejor
  • Cuándo su sitio funcionará más lento o fallará

Existen varias herramientas en línea para realizar una prueba de esfuerzo; sin embargo, si está buscando una solución interna o desea comparar solo el rendimiento del servidor web, puede utilizar ApacheBanco y, alternativamente, algunas de las herramientas que se enumeran a continuación.

He usado el servidor web Apache y Nginx alojado en Digital Ocean para probarlo.

ApacheBench

ApacheBanco (ab) es un programa de línea de comandos de código abierto que funciona con cualquier servidor web. En esta publicación, explicaré cómo instalar este pequeño programa y realizar la prueba de carga para comparar los resultados.

APACHE

Instalemos ApacheBench usando un comando yum.

yum install httpd-tools

Si ya tiene httpd-tools, puede ignorar esto.

Ahora, veamos cómo funciona para 5000 solicitudes con una concurrencia de 500.

[root@lab ~]# ab -n 5000 -c 500 http://localhost:80/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Completed 500 requests
Completed 1000 requests
Completed 1500 requests
Completed 2000 requests
Completed 2500 requests
Completed 3000 requests
Completed 3500 requests
Completed 4000 requests
Completed 4500 requests
Completed 5000 requests
Finished 5000 requests
Server Software:        Apache/2.2.15
Server Hostname:        localhost
Server Port:            80
Document Path:          /
Document Length:        4961 bytes
Concurrency Level:      500
Time taken for tests:   13.389 seconds
Complete requests:      5000
Failed requests:        0
Write errors:           0
Non-2xx responses:      5058
Total transferred:      26094222 bytes
HTML transferred:       25092738 bytes
Requests per second:    373.45 [#/sec] (mean)
Time per request:       1338.866 [ms] (mean)
Time per request:       2.678 [ms] (mean, across all concurrent requests)
Transfer rate:          1903.30 [Kbytes/sec] received
Connection Times (ms)
min  mean[+/-sd] median   max
Connect:        0   42  20.8     41    1000
Processing:     0  428 2116.5     65   13310
Waiting:        0  416 2117.7     55   13303
Total:         51  470 2121.0    102   13378
Percentage of the requests served within a certain time (ms)
50%    102
66%    117
75%    130
80%    132
90%    149
95%    255
98%  13377
99%  13378
100%  13378 (longest request)
[root@lab ~]#

Como puede ver, Apache ha manejado 373 solicitudes por segundo, y tardó un total de 13.389 segundos en atender el total de solicitudes.

Ahora sabe que la configuración predeterminada puede atender todas estas solicitudes, por lo que cuando realice cambios en la configuración, puede realizar la prueba nuevamente para comparar los resultados y elegir el el albergue mejor calificado uno.

Nginx

Hagamos la prueba de lo que hicimos para Apache para que pueda comparar cuál funciona mejor.

[root@lab ~]# ab -n 5000 -c 500 http://localhost:80/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Completed 500 requests
Completed 1000 requests
Completed 1500 requests
Completed 2000 requests
Completed 2500 requests
Completed 3000 requests
Completed 3500 requests
Completed 4000 requests
Completed 4500 requests
Completed 5000 requests
Finished 5000 requests
Server Software:        nginx/1.10.1
Server Hostname:        localhost
Server Port:            80
Document Path:          /
Document Length:        3698 bytes
Concurrency Level:      500
Time taken for tests:   0.758 seconds
Complete requests:      5000
Failed requests:        0
Write errors:           0
Total transferred:      19660000 bytes
HTML transferred:       18490000 bytes
Requests per second:    6593.48 [#/sec] (mean)
Time per request:       75.832 [ms] (mean)
Time per request:       0.152 [ms] (mean, across all concurrent requests)
Transfer rate:          25317.93 [Kbytes/sec] received
Connection Times (ms)
min  mean[+/-sd] median   max
Connect:        0    6  11.0      2      53
Processing:     5   19   8.2     17      53
Waiting:        0   18   8.2     16      47
Total:         10   25  17.4     18      79
Percentage of the requests served within a certain time (ms)
50%     18
66%     21
75%     21
80%     22
90%     69
95%     73
98%     75
99%     76
00%     79 (longest request)
[root@lab ~]#

WOW!

¿Viste eso?

Nginx manejado 6593 solicitudes por segundo! Un ganador.

Entonces, al compararlo con dos servidores web, tendrá una idea de cuál elegir para su aplicación web.

La prueba anterior está en CentOS 6.8, 64 bits. Puede probar múltiples combinaciones de versiones de SO y Web Server para obtener resultados óptimos.

¿No te gusta ApacheBench por alguna razón? No se preocupe, hay muchos otros que puede utilizar para realizar la carga HTTP.

SIEGE

CERCO es una utilidad de prueba de carga HTTP compatible con UNIX. Puede colocar varias URL en un archivo de texto para cargar pruebas. Puedes instalar siege usando yum.

# yum instalar asedio

Ejecutemos la prueba con 500 solicitudes simultáneas durante 5 segundos.

[root @ lab ~] # siege -q -t 5S -c 500 http: // localhost / Levantando el asedio al servidor ... hecho. Transacciones: 4323 hits Disponibilidad: 100.00% Tiempo transcurrido: 4.60 segundos Datos transferidos: 15.25 MB Tiempo de respuesta: 0.04 segundos Tasa de transacción: 939.78 trans / seg Rendimiento: 3.31 MB / seg Concurrencia: 37.97 Transacciones exitosas: 4323 Transacciones fallidas: 0 Transacción más larga: 1.04 Transacción más corta: 0.00 [root @ lab ~] #

Desglosar los parámetros.

-q - para ejecutarlo silenciosamente (sin mostrar los detalles de la solicitud)

-t - ejecutar durante 5 segundos

-c - 500 solicitudes simultáneas

Entonces, como puede ver, la disponibilidad es del 100% y el tiempo de respuesta es de 0.04 segundos. Puede modificar el parámetro de prueba de carga según su objetivo.

Ali

Ali es una herramienta de prueba de carga relativamente nueva para realizar análisis en tiempo real. Es compatible con múltiples plataformas para instalar, incluido Docker.

Una vez instalado, ejecute ali para ver los detalles de uso.

root@lab:~# ali
no target given
Usage:
  ali [flags] <target URL>

Flags:
  -b, --body string         A request body to be sent.
  -B, --body-file string    The path to file whose content will be set as the http request body.
      --debug               Run in debug mode.
  -d, --duration duration   The amount of time to issue requests to the targets. Give 0s for an infinite attack. (default 10s)
  -H, --header strings      A request header to be sent. Can be used multiple times to send multiple headers.
  -k, --keepalive           Use persistent connections. (default true)
  -M, --max-body int        Max bytes to capture from response bodies. Give -1 for no limit. (default -1)
  -m, --method string       An HTTP request method for each request. (default "GET")
  -r, --rate int            The request rate per second to issue against the targets. Give 0 then it will send requests as fast as possible. (default 50)
  -t, --timeout duration    The timeout for each request. 0s means to disable timeouts. (default 30s)
  -v, --version             Print the current version.

Examples:
  ali --duration=10m --rate=100 http://host.xz

Author:
  Ryo Nakao <ryo@nakao.dev>
root@lab:~#

Como puede ver arriba, tiene la opción de enviar encabezados HTTP, duración de la prueba, límite de velocidad, tiempo de espera y más. Hice una prueba rápida en Herramientas Geekflare y aquí está la salida.

El informe es interactivo y proporciona información detallada sobre latencia.

Gobench

Gobanco está escrito en lenguaje Go y una sencilla utilidad de prueba de carga para comparar el rendimiento del servidor web. Es compatible con más de 20,000 usuarios simultáneos que ApacheBench no.

Apache JMeter

JMeter es una de las herramientas de código abierto más populares para medir el rendimiento de las aplicaciones web. JMeter es una aplicación basada en Java y no solo un servidor web, sino que puede usarlo contra PHP, Java. ASP.net, SOAP, REST, etc.

JMeter obtuvo una GUI amigable y decente, y la última versión 3.0 requiere Java 7 o superior para iniciar la aplicación. Debe probar JMeter si su objetivo es optimizar el rendimiento de la aplicación web.

wrk

trabajar es otra herramienta moderna de medición del rendimiento para cargar su servidor web y brindarle detalles de latencia, solicitud por segundo, transferencia por segundo, etc.

Con wrk, puede especificar ejecutar una prueba de carga con varios subprocesos.

Tomemos un ejemplo de ejecución de una prueba durante 5 minutos con 500 usuarios simultáneos con 8 hilos.

wrk –t8 –c500 -d300s http://localhost

Autocannon

Inspirado por el trabajo, cañón automático está escrito en Node.js. Puede usarlo mediante programación, a través de API o una utilidad independiente. Todo lo que necesitas es NodeJS instalado como requisito previo.

Puede controlar una serie de conexiones, solicitudes, duración, trabajadores, tiempo de espera, tasa de conexión y ofrecer toneladas de opciones para comparar sus aplicaciones web.

Curl-loader

cargador de rizos está escrito en C para simular la carga de la aplicación y es compatible con SSL / TLS. Junto con la prueba de la página web, también puede utilizar esta herramienta de código abierto para realizar la carga en servidores FTP.

Puede crear un plan de prueba con una combinación de HTTP, HTTPS, FTP y FTPS en una configuración de un solo lote.

httperf

Programas de httperf es una herramienta de alto rendimiento que se centra en puntos de referencia a nivel micro y macro. Es compatible con los protocolos HTTP / 1.1 y SSL.

Si tiene la cantidad esperada de usuarios simultáneos y desea probar si su servidor web puede atender una cantidad de solicitudes, puede usar el siguiente comando.

httperf --server localhost --port 80 --num-conns 1000 --rate 100

El comando anterior probará con 100 solicitudes por segundo para 1000 solicitudes HTTP.

Tsung

Tsung es una herramienta de prueba de esfuerzo distribuida multiprotocolo para enfatizar HTTP, SOAP, PostgreSQL, LDAP, XAMP, servidor MySQL. Es compatible con HTTP / 1.0, HTTP / 1.1 y las cookies se manejan automáticamente.

Generar un informe es factible con Tsung.

En resumen

Espero que las herramientas de evaluación comparativa anteriores le den una idea sobre el rendimiento de su servidor web y decidan qué funciona mejor para su proyecto.

A continuación, no olvides supervisar el rendimiento de su sitio web.

Gracias a nuestros patrocinadores
Más lecturas excelentes sobre la gestión de pruebas
Impulse su negocio
Algunas de las herramientas y servicios para ayudar a que su negocio crezca.
  • Invicti utiliza Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en cuestión de horas.
    Prueba Invicti
  • Web scraping, proxy residencial, administrador de proxy, desbloqueador web, rastreador de motores de búsqueda y todo lo que necesita para recopilar datos web.
    Prueba Brightdata
  • Semrush es una solución de marketing digital todo en uno con más de 50 herramientas en SEO, redes sociales y marketing de contenido.
    Prueba Semrush
  • Intruder es un escáner de vulnerabilidades en línea que encuentra debilidades de ciberseguridad en su infraestructura, para evitar costosas filtraciones de datos.
    Trata Intruder