tech · 21 de February de 2025

Pruebas de Carga (Stress) con AB Apache Benchmark

Getting your Trinity Audio player ready...

conocer los pasos fundamentales para efectuar pruebas básicas de carga de peticiones HTTP a servidor Apache con el uso del comando «ab» Apache Benchmark.

Instalación:

operador@server:~# aptitude install apache2-utils gnuplot


Ejecución comando:

1. Selecciona la URL a probar y ejecute comando:

operador@server:~# ab -k -n1000 -c100 -H 'Accept-Encoding: gzip,deflate' http://www.example.com.ve/sitio/

Donde:
-k (KeepAlive). Realizar múltiples solicitudes dentro de una sesión HTTP, funcionalidad de los navegadores por la naturaleza
-n (requests). Número total de solicitudes para ejecutar
-c (concurrency). Cantidad de conexiones concurrentes
-H ‘Accept-Encoding: gzip,deflate’ (custom-header). Anexar encabezados adicionales a la solicitud. Imita la peticiones típica que un navegador enviará

2. Resultado:

 This is ApacheBench, Version 2.3 
 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
 Licensed to The Apache Software Foundation, http://www.apache.org/

 Benchmarking www.example.com.ve (be patient)
 Completed 100 requests
 Completed 200 requests
 Completed 300 requests
 Completed 400 requests
 Completed 500 requests
 Completed 600 requests
 Completed 700 requests
 Completed 800 requests
 Completed 900 requests
 Completed 1000 requests
 Finished 1000 requests

 Server Software:        Oracle-Application-Server-10g/10.1.2.2.0
 Server Hostname:        www.example.com.ve
 Server Port:            80

 Document Path:          /sitio/
 Document Length:        17225 bytes

 Concurrency Level:      100
 Time taken for tests:   4.666 seconds
 Complete requests:      1000
 Failed requests:        0
 Keep-Alive requests:    0
 Total transferred:      17727285 bytes
 HTML transferred:       17225000 bytes
 Requests per second:    214.31 [#/sec] (mean)
 Time per request:       466.611 [ms] (mean)
 Time per request:       4.666 [ms] (mean, across all concurrent requests)
 Transfer rate:          3710.12 [Kbytes/sec] received

 Connection Times (ms)
               min  mean[+/-sd] median   max
 Connect:        3   14 134.3      7    3013
 Processing:    21  328 364.8    220    2618
 Waiting:       20  211 124.4    202    1429
 Total:         26  342 387.4    230    3250

 Percentage of the requests served within a certain time (ms)
   50%    230
   66%    257
   75%    278
   80%    312
   90%    445
   95%   1384
   98%   1472
   99%   1579
  100%   3250 (longest request)

3. Datos Importantes:

– Requests per second (mean): Cantidad de peticiones por segundo
– Time per request (mean): tiempo promedio en atender grupo de peticiones concurrentes
– Time per request (mean, across all concurrent requests): tiempo promedio en atender una petición

Graficar Resultado con gnuplot

1. Selecciona la URL a probar, adicionando el parámetro «-g» y el nombre de un archivo para almacenar los resultados «datos.csv»:

ab -k -n1000 -c100 -H 'Accept-Encoding: gzip,deflate' -g datos.csv http://www.example.com.ve/sitio/

donde:
-g (gnuplot-file). Escribe todos los valores medidos como un ‘gnuplot’

2. En la misma ruta donde se encuentra el archivo generado «datos.csv», crear archivo «plot.p»

operador@server:~# vim plot.p

Incluir la siguiente información:

 set terminal png size 600
 set output "resultados.png"
 set title "1000 peticiones, 100 peticiones concurrentes"
 set size ratio 0.6
 set grid y
 set xlabel "Nro Peticiones"
 set ylabel "Tiempo de respuesta (ms)"
 plot "datos.csv" using 9 smooth sbezier with lines title "http://www.example.com.ve"

3. Generar la gráfica «resultado.png»

operador@server:~# gnuplot plot.p

You cannot copy content of this page

Abrir conversación
dame un toke por aquí ...
Scan the code
Buenas 👋
En que te puedo ayudar?