{"id":2949,"date":"2025-02-21T18:31:23","date_gmt":"2025-02-21T17:31:23","guid":{"rendered":"https:\/\/djimn.com\/?p=2949"},"modified":"2025-02-21T18:31:23","modified_gmt":"2025-02-21T17:31:23","slug":"pruebas-de-carga-stress-con-ab-apache-benchmark","status":"publish","type":"post","link":"https:\/\/djimn.com\/index.php\/2025\/02\/21\/pruebas-de-carga-stress-con-ab-apache-benchmark\/","title":{"rendered":"Pruebas de Carga (Stress) con AB Apache Benchmark"},"content":{"rendered":"<p>conocer los pasos fundamentales para efectuar pruebas b\u00e1sicas de carga de peticiones HTTP a servidor Apache con el uso del comando \u00abab\u00bb Apache Benchmark.<\/p>\n<p><strong>Instalaci\u00f3n:<\/strong><\/p>\n<pre>operador@server:~# aptitude install apache2-utils gnuplot<\/pre>\n<p><span id=\"more-795\"><\/span><br \/>\n<strong>Ejecuci\u00f3n comando:<\/strong><\/p>\n<p>1. Selecciona la URL a probar y ejecute comando:<\/p>\n<pre>operador@server:~# ab -k -n1000 -c100 -H 'Accept-Encoding: gzip,deflate' http:\/\/www.example.com.ve\/sitio\/<\/pre>\n<p>Donde:<br \/>\n-k (KeepAlive). Realizar m\u00faltiples solicitudes dentro de una sesi\u00f3n HTTP, funcionalidad de los navegadores por la naturaleza<br \/>\n-n (requests). N\u00famero total de solicitudes para ejecutar<br \/>\n-c (concurrency). Cantidad de conexiones concurrentes<br \/>\n-H \u2018Accept-Encoding: gzip,deflate\u2019 (custom-header). Anexar encabezados adicionales a la solicitud. Imita la peticiones t\u00edpica que un navegador enviar\u00e1<\/p>\n<p>2. Resultado:<\/p>\n<pre> This is ApacheBench, Version 2.3 \r\n Copyright 1996 Adam Twiss, Zeus Technology Ltd, http:\/\/www.zeustech.net\/\r\n Licensed to The Apache Software Foundation, http:\/\/www.apache.org\/\r\n\r\n Benchmarking www.example.com.ve (be patient)\r\n Completed 100 requests\r\n Completed 200 requests\r\n Completed 300 requests\r\n Completed 400 requests\r\n Completed 500 requests\r\n Completed 600 requests\r\n Completed 700 requests\r\n Completed 800 requests\r\n Completed 900 requests\r\n Completed 1000 requests\r\n Finished 1000 requests\r\n\r\n Server Software:        Oracle-Application-Server-10g\/10.1.2.2.0\r\n Server Hostname:        www.example.com.ve\r\n Server Port:            80\r\n\r\n Document Path:          \/sitio\/\r\n Document Length:        17225 bytes\r\n\r\n Concurrency Level:      100\r\n Time taken for tests:   4.666 seconds\r\n Complete requests:      1000\r\n Failed requests:        0\r\n Keep-Alive requests:    0\r\n Total transferred:      17727285 bytes\r\n HTML transferred:       17225000 bytes\r\n Requests per second:    214.31 [#\/sec] (mean)\r\n Time per request:       466.611 [ms] (mean)\r\n Time per request:       4.666 [ms] (mean, across all concurrent requests)\r\n Transfer rate:          3710.12 [Kbytes\/sec] received\r\n\r\n Connection Times (ms)\r\n               min  mean[+\/-sd] median   max\r\n Connect:        3   14 134.3      7    3013\r\n Processing:    21  328 364.8    220    2618\r\n Waiting:       20  211 124.4    202    1429\r\n Total:         26  342 387.4    230    3250\r\n\r\n Percentage of the requests served within a certain time (ms)\r\n   50%    230\r\n   66%    257\r\n   75%    278\r\n   80%    312\r\n   90%    445\r\n   95%   1384\r\n   98%   1472\r\n   99%   1579\r\n  100%   3250 (longest request)\r\n<\/pre>\n<p>3. Datos Importantes:<\/p>\n<p>\u2013 Requests per second (mean): Cantidad de peticiones por segundo<br \/>\n\u2013 Time per request (mean): tiempo promedio en atender grupo de peticiones concurrentes<br \/>\n\u2013 Time per request (mean, across all concurrent requests): tiempo promedio en atender una petici\u00f3n<\/p>\n<p><strong>Graficar Resultado con gnuplot<\/strong><\/p>\n<p>1. Selecciona la URL a probar, adicionando el par\u00e1metro \u00ab-g\u00bb y el nombre de un archivo para almacenar los resultados \u00abdatos.csv\u00bb:<\/p>\n<pre>ab -k -n1000 -c100 -H 'Accept-Encoding: gzip,deflate' -g datos.csv http:\/\/www.example.com.ve\/sitio\/<\/pre>\n<p>donde:<br \/>\n-g (gnuplot-file). Escribe todos los valores medidos como un \u2018gnuplot\u2019<\/p>\n<p>2. En la misma ruta donde se encuentra el archivo generado \u00abdatos.csv\u00bb, crear archivo \u00abplot.p\u00bb<\/p>\n<pre>operador@server:~# vim plot.p<\/pre>\n<p>Incluir la siguiente informaci\u00f3n:<\/p>\n<pre> set terminal png size 600\r\n set output \"resultados.png\"\r\n set title \"1000 peticiones, 100 peticiones concurrentes\"\r\n set size ratio 0.6\r\n set grid y\r\n set xlabel \"Nro Peticiones\"\r\n set ylabel \"Tiempo de respuesta (ms)\"\r\n plot \"datos.csv\" using 9 smooth sbezier with lines title \"http:\/\/www.example.com.ve\"\r\n<\/pre>\n<p>3. Generar la gr\u00e1fica \u00abresultado.png\u00bb<\/p>\n<pre>operador@server:~# gnuplot plot.p<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>conocer los pasos fundamentales para efectuar pruebas b\u00e1sicas de carga de peticiones HTTP a servidor Apache con el uso del comando \u00abab\u00bb Apache Benchmark. Instalaci\u00f3n: operador@server:~# aptitude install apache2-utils gnuplot Ejecuci\u00f3n comando: 1. Selecciona la URL a probar y ejecute comando: operador@server:~# ab -k -n1000 -c100 -H &#8216;Accept-Encoding: gzip,deflate&#8217; http:\/\/www.example.com.ve\/sitio\/ Donde: -k (KeepAlive). Realizar m\u00faltiples&hellip; <\/p>\n","protected":false},"author":1,"featured_media":3058,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"_joinchat":[],"footnotes":""},"categories":[5],"tags":[43,42,45,44,46,47],"class_list":["post-2949","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tech","tag-apache","tag-benchmark","tag-gnuplot","tag-jmeter","tag-web","tag-webserver"],"jetpack_featured_media_url":"https:\/\/djimn.com\/wp-content\/uploads\/2024\/10\/apachebench_hero-scaled.avif","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/djimn.com\/index.php\/wp-json\/wp\/v2\/posts\/2949","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/djimn.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/djimn.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/djimn.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/djimn.com\/index.php\/wp-json\/wp\/v2\/comments?post=2949"}],"version-history":[{"count":1,"href":"https:\/\/djimn.com\/index.php\/wp-json\/wp\/v2\/posts\/2949\/revisions"}],"predecessor-version":[{"id":2950,"href":"https:\/\/djimn.com\/index.php\/wp-json\/wp\/v2\/posts\/2949\/revisions\/2950"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/djimn.com\/index.php\/wp-json\/wp\/v2\/media\/3058"}],"wp:attachment":[{"href":"https:\/\/djimn.com\/index.php\/wp-json\/wp\/v2\/media?parent=2949"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/djimn.com\/index.php\/wp-json\/wp\/v2\/categories?post=2949"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/djimn.com\/index.php\/wp-json\/wp\/v2\/tags?post=2949"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}