Apache Benchmark + GNUPlot: Măsurați și graficați performanța serverului dvs. web

Nu contează dacă este folosit nginx, Apache, Lighttpd sau altfel, orice administrator de rețea care are un server web va dori la un moment dat să știe cât de rapid răspunde serverul web la un anumit număr de interogări.

Servicii-gestionate-Server-Management-e1368625038693

Apache Benchmark + GNUPlot

De data aceasta vom folosi un instrument numit Apache Benchmark, care, deși are „apache” în numele său, NU este doar pentru măsurarea performanței Apache, ci poate fi folosit și pentru Nginx și altele. De fapt, îl voi folosi pentru a măsura performanța nginx.

Vom folosi, de asemenea GNUPlot, care ne va ajuta să realizăm astfel de grafice cu câteva linii:

rezultate obținute

Instalarea Apache Benchmark și GNUPlot

Apache Benchmark este un instrument pe care îl putem folosi după instalarea pachetului Apache, GNUPlot va fi disponibil după instalarea pachetului cu același nume. Deci ...

Pe distribuții precum Debian, Ubuntu sau altele similare:

sudo apt-get install apache2 gnuplot

În distribuții precum ArchLinux sau derivate:

sudo pacman -S apache gnuplot

Trebuie doar să instalăm pachetul Apache, nu trebuie să-l pornim sau să configurăm altceva, doar instalarea acestuia va fi suficientă.

Folosind Apache Benchmark

Ceea ce vom face este să trimitem un anumit număr de solicitări (100) în grupuri de mai multe (de la 20 la 20) la un anumit site. Vom salva rezultatul într-un fișier .csv (result.csv) și apoi îl vom procesa cu GNUPloit, linia ar fi:

ab -g resultados.csv -n 100 -c 20 http://nuestro-sitio-web.com/

Este foarte important să introduceți finalul / în URL-ul site-ului care urmează să fie măsurat.

Aceasta este ieșirea sau jurnalul care îmi arată când testez un site din rețeaua mea:

Acesta este ApacheBench, versiunea 2.3 <$ Revizie: 1638069 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licențiat la The Apache Software Foundation, http://www.apache.org/ Benchmarking gutl.jovenclub.cu (ai răbdare) ..... gata

Software de server: Nginx Server Nume de gazdă: gutl.jovenclub.cu Port server: 80

Calea documentului: /
Lungimea documentului: 206 octeți Nivelul concurenței: 20 Timpul necesar testelor: 0.101 secunde Solicitări complete: 100 Solicitări nereușite: 27 (Conectare: 0, Primire: 0, Lungime: 27, Excepții: 0) Răspunsuri non-2xx: 73 Total transferate: 1310933 octeți HTML transferați: 1288952 octeți
Solicitări pe secundă: 993.24 [# / sec] (medie)
Timp pe cerere: 20.136 [ms] (medie) Timp pe cerere: 1.007 [ms] (medie, la toate solicitările simultane) Rată de transfer: 12715.49 [Kbytes / sec] primit Timp de conexiune (ms) medie medie [+/- sd] median max Conectare: 0 1 0.2 1 1 Procesare: 1 17 24.8 4 86 În așteptare: 1 15 21.5 4 76 Total: 1 18 24.8 5 87 Procentajul cererilor furnizate într-un anumit timp (ms) 50% 5 66% 6 75% 22 80% 41 90% 62 95% 80 98% 87 99% 87
100% 87 (cea mai lungă solicitare)

Am marcat cu roșu ceea ce consider că este cel mai important lucru, care a fost mai mult sau mai puțin:

  1. Datele serverului pe care îl testăm, precum și adresa URL în cauză.
  2. Numărul de solicitări pe secundă.
  3. Câte milisecunde a luat serverul pentru a răspunde la solicitarea care a durat cel mai mult, adică cea care a durat cel mai mult timp pentru a fi răspuns.

Cu aceste informații, ei pot avea o idee despre cât timp va dura serverul pentru a participa la acea cantitate de solicitări, pot apoi să adauge un sistem de cache mai bun, să dezactiveze modulele pe care nu le folosesc, etc etc, să execute din nou testul și vezi dacă performanța s-a îmbunătățit sau nu.

Vă recomand să rulați testul de 2 sau 3 ori, astfel încât să creați ceva de genul unei marje, deoarece rezultatele a două teste la rând sunt rareori identice.

Alte opțiuni utile sau parametri Apache Benchmark:

-k -H „Acceptare-codificare: gzip, deflate” : Cu această ab va accepta memoria cache și compresia pe care serverul le-a configurat, astfel încât timpul va fi mai mic.

-f urls.txt : Deci, în loc să testeze doar indexul site-ului, acesta va efectua teste pe adresele URL pe care le specificăm în acel fișier.

Oricum ... aruncă o privire omul ab pentru ca tu să vezi.

Arată rezultatul într-un grafic:

Pentru a pune această ieșire într-o imagine, adică într-un mediu mai vizual și de multe ori, este tot ceea ce managerii reușesc să înțeleagă ... pentru aceasta vom folosi așa cum am spus mai înainte, GNUPlot

În același folder în care avem fișierul results.csv (nu uitați, tocmai am generat cu comanda de mai sus) vom crea un fișier numit gnuplot.p:

nano plot.p

În el vom pune următoarele:

set terminal png size 600 set output "results.png„titlu setat”100 cereri, 20 solicitări concurente "setați raportul de dimensiune 0.6 setați grila și setați xlabel"solicitări„setează ylabel”timp de răspuns (ms)"complot"rezultate.csv„folosind 9 sbezier netede cu titlul liniilor”gutl.jovenclub.cu"

Am marcat cu roșu ceea ce ar trebui să verificați întotdeauna. Adică și de sus în jos:

  1. Numele fișierului imagine care urmează să fie generat
  2. Numărul de cereri totale și concurente.
  3. Numele fișierului pe care tocmai l-am generat.
  4. Domeniul la care lucrăm.

Odată ce am introdus asta, salvăm și ieșim (Ctrl + O și apoi Ctrl + X), vom executa următoarele:

gnuplot plot.p

Și voila, care va genera graficul cu numele dorit, al meu este:

rezultate2

Sfarsit!

Apache Benchmark are mult mai multe opțiuni, există și multe combinații pe care le putem folosi pentru a face testul nostru de performanță și mai complet.

Dar hei, acestea au fost elementele de bază 😉

Bucurați-vă!


Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.

  1.   Francisco el a spus

    Interesant punct de referință apache, nu știam despre gnuplot, este posibil să modificați stilul de ieșire? Spun în ceea ce privește un raport formal.

    Salutări din Chile.

    1.    KZKG ^ Gaara el a spus

      Da, există o mulțime de configurații în rețea pentru gnuplot, căutați de Google pentru a vedea dacă găsiți vreun lucru suficient de serios sau profesionist pentru ca dvs. să îl utilizați, pentru că asta este gustul tuturor 🙂

  2.   Wolf119 el a spus

    Ummm, o voi testa chiar acum pe un server virtual apache pe care îl rulez pentru a vedea cum merge, în ceea ce privește GUTL, deoarece se declanșează foarte repede din 80 de cereri, nu? Să vedem că 100 ms nu nimic, dar maximul care dă pentru încă 10 cereri față de 70 la 80 cu 80 la 90 îmi atrage atenția

    1.    KZKG ^ Gaara el a spus

      Trebuie să fie din cauza cozii sau a numărului de fire maxime la care să participe simultan. Cu toate acestea, am făcut testul fără gzip, fără dezumflare, fără cache sau nimic 😉

  3.   Charlie Brown el a spus

    Foarte interesant, mai ales pentru utilizarea GNUPlot. Din ceea ce văd, poate fi folosit pentru a genera grafice din aproape orice set de date, nu? ...

    1.    KZKG ^ Gaara el a spus

      Da, desigur, treci datele într-un fișier separat prin virgule sau ceva de genul asta, îi spui cum să le procesezi în fișierul de configurare și voila

  4.   Adolfo el a spus

    Bună ziua, petrec mereu timp citind acest blog, dar nu am comentat niciodată vreun articol, iar acest lucru pare o oportunitate bună.
    Ceea ce vreau să vă împărtășesc este că acest tip de grafic poate fi interpretat greșit, deoarece Apache Bench sortează rezultatul folosind ttime (timp total) în loc de timp secvențial. Deși datele sunt încă adevărate, graficul probabil nu arată ceea ce dorim.
    Aici las linkul unde l-am citit.
    http://www.bradlanders.com/2013/04/15/apache-bench-and-gnuplot-youre-probably-doing-it-wrong/

    Salutări.

  5.   Hugo el a spus

    Apache Benchmark nu este cel mai bun instrument pentru a măsura performanța serverelor HTTP pe computere cu mai multe nuclee, în plus, doar 100 de cereri cu 20 de conexiuni simultane este un test foarte slab, ceva mai realist ar fi 1,000 sau 10,000 de cereri cu 100 de conexiuni simultane ( se știe că Nginx este una dintre aplicațiile capabile să servească mai mult de 10,000 de cereri pe secundă) și pentru aceasta este mai bine să folosiți un instrument precum weighttp, care este conceput pentru echipe cu mai multe nuclee și folosește epoll care este mai rapid, spre deosebire de Apache Bancă care folosește un singur fir și un mecanism de gestionare a evenimentelor mai puțin eficient.

    Pentru a ajunge la punctul meu de vedere, presupunând că serverul are doar 4 nuclee:

    weighttp -n 10000 -c 100 -t 4 -k "http://our-website.com/"

  6.   credinţă el a spus

    Bună tuturor,
    Când desenezi graficul (din CSV) cu gnuplot îmi dă următoarea eroare, îmi poți spune cum să-l rezolv?

    "Plot.p", linia 8: avertisment: Omiterea fișierului de date fără puncte valide

    graficul «graph.csv» folosind 9 sbezier lin cu titlul liniilor «AB - localhost / web»
    ^
    „Plot.p”, linia 8: intervalul x este nevalid

    Cu gnuplot, pot genera și pagini HTML?