Apache Benchmark + GNUPlot: Izmjerite i grafički prikažite performanse vašeg web servera

Nije važno da li se koristi Nginx, apaš, Lighttpd ili drugi, bilo koji mrežni administrator koji ima web server u jednom će trenutku htjeti znati koliko brzo web server odgovara na zadati broj upita.

Managed-Services-Server-Management-e1368625038693

Apache Benchmark + GNUplot

Ovaj put koristit ćemo alat tzv Apache Benchmark, koji iako u svom nazivu ima 'apache', NIJE samo za mjerenje performansi Apachea, već se može koristiti i za Nginx i druge. Zapravo, koristit ću ga za mjerenje performansi Nginx.

Takođe ćemo koristiti GNUplot, koji će nam pomoći da napravimo ovakve grafikone sa nekoliko redaka:

rezultati

Instaliranje Apache Benchmarka i GNUPlot-a

Apache Benchmark je alat koji možemo koristiti nakon instaliranja Apache paketa, GNUPlot će biti dostupan nakon instaliranja istoimenog paketa. Pa onda ...

Na distribucijama poput Debiana, Ubuntu-a ili sličnih:

sudo apt-get install apache2 gnuplot

U distribucijama poput ArchLinux-a ili derivata:

sudo pacman -S apache gnuplot

Moramo instalirati samo paket Apache, ne moramo ga pokretati niti konfigurirati bilo što drugo, dovoljno će biti samo njegovo instaliranje.

Korištenje Apache Benchmarka

Ono što ćemo učiniti je poslati određeni broj zahtjeva (100) u grupama od nekoliko (od 20 do 20) na određeno mjesto. Rezultat ćemo spremiti u .csv datoteku (result.csv), a zatim ga obraditi GNUPloit-om, redak bi bio:

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

Vrlo je važno staviti konačni / u URL stranice koja će se mjeriti.

Ovo je izlaz ili zapis koji mi pokazuje kada testiram web lokaciju na svojoj mreži:

Ovo je ApacheBench, verzija 2.3 <$ Revizija: 1638069 $> Autorska prava 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licenca Apache Software Foundation, http://www.apache.org/ Benchmarking gutl.jovenclub.cu (budite strpljivi) ..... gotovo

Poslužiteljski softver: nginx Ime hosta poslužitelja: gutl.jovenclub.cu Port poslužitelja: 80

Put dokumenta: /
Dužina dokumenta: 206 bajtova Istovremena razina: 20 Vrijeme potrebno za testove: 0.101 sekunde Potpuni zahtjevi: 100 Neuspjeli zahtjevi: 27 (Povezivanje: 0, primanje: 0, dužina: 27, izuzeci: 0) Odgovori koji nisu 2xx: 73 Ukupno preneseno: 1310933 bajta Preneseni HTML: 1288952 bajta
Zahtjevi u sekundi: 993.24 [# / sec] (srednje)
Vrijeme po zahtjevu: 20.136 [ms] (srednje) Vrijeme po zahtjevu: 1.007 [ms] (prosječno, za sve istovremene zahtjeve) Brzina prijenosa: 12715.49 [Kbytes / sec] primljena vremena povezivanja (ms) min srednje [+/- sd] medijan max Povezivanje: 0 1 0.2 1 1 Obrada: 1 17 24.8 4 86 Čekanje: 1 15 21.5 4 76 Ukupno: 1 18 24.8 5 87 Procenat zahtjeva dostavljenih u određenom vremenu (ms) 50% 5 66% 6 75% 22 80% 41 90% 62 95% 80 98% 87 99% 87
100% 87 (najduži zahtjev)

Crvenom bojom sam označio ono što smatram najvažnijom, a to je bilo više-manje:

  1. Podaci servera koji testiramo, kao i URL o kojem je riječ.
  2. Broj zahtjeva u sekundi.
  3. Koliko je milisekundi poslužitelju trebalo da servisira zahtjev koji je najduže trajao, odnosno onaj kojem je trebalo najviše vremena da se odgovori.

Pomoću ovih informacija mogu imati ideju koliko će vremena trebati serveru da pristupi toj količini zahtjeva, a zatim mogu dodati bolji sistem predmemorije, deaktivirati module koje ne koriste itd., Itd., Ponovo pokrenuti test i pogledajte da li su se performanse poboljšale ili ne.

Preporučujem pokretanje testa 2 ili 3 puta, tako da stvorite nešto poput margine, jer su rezultati dva testa zaredom rijetko identični.

Ostale korisne Apache Benchmark opcije ili parametri:

-k -H 'Prihvati-kodiraj: gzip, isprazni' : Uz ovaj ab će prihvatiti predmemoriju i kompresiju koju je poslužitelj konfigurirao, tako da će vremena biti manja.

-f urls.txt : Dakle, umjesto da samo testira indeks stranice, on će provesti testove na URL-ovima koje smo naveli u toj datoteci.

U svakom slučaju ... pogledajte man ab da vidite.

Prikaži rezultat na grafikonu:

Da se ovaj izlaz stavi u sliku, odnosno u vizualniji medij i to mnogo puta, sve je ono što menadžeri uspijevaju razumjeti ... za ovo ćemo koristiti kao što sam već rekao, GNUplot

U istoj mapi u kojoj imamo datoteku results.csv (zapamtite, upravo smo generirali pomoću gornje naredbe) stvorit ćemo datoteku zvanu gnuplot.p:

nano plot.p

U njega ćemo staviti sljedeće:

postavi terminal png veličina 600 postavi izlaz "results.png"postavi naslov"100 zahtjevi, 20 istovremeni zahtjevi "postavi omjer veličine 0.6 postavi mrežu i postavi xlabel"zahtjevi"postavi ylabel"vrijeme odziva (ms)"zaplet"rezultati.csv"pomoću 9 glatkih sbeziera s naslovom linija"gutl.jovenclub.cu"

Crvenom sam naznačio ono što uvijek trebate provjeriti. To je i od vrha do dna:

  1. Naziv datoteke slike koja će se generirati
  2. Broj ukupnih i istovremenih zahtjeva.
  3. Ime datoteke koju smo upravo generirali.
  4. Domen na kojem radimo.

Jednom kada to stavimo, spremimo i izađemo (Ctrl + O a zatim Ctrl + X), izvršit ćemo sljedeće:

gnuplot plot.p

A voila, koja će generirati graf sa željenim imenom, moj je:

rezultati2

Kraj!

Apache Benchmark ima puno više opcija, takođe postoji mnogo kombinacija koje možemo koristiti da naš test performansi učinimo još potpunijim.

Ali hej, ovo je bilo osnova 😉

Uživajte!


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   Francisco rekao je

    Zanimljivo upoređivanje apachea, nisam znao za gnuplot, je li moguće izmijeniti stil izlaza? Kažem za formalni izvještaj.

    Pozdrav iz Čilea.

    1.    KZKG ^ Gaara rekao je

      Da, na mreži postoji puno konfiguracija za gnuplot, pretražite Google da biste pronašli da li smatrate dovoljno ozbiljnim ili profesionalnim da ga možete koristiti, jer to je svačiji ukus 🙂

  2.   Wolf119 rekao je

    Ummm, testirat ću ga odmah na virtualnom Apache serveru koji pokrećem da vidim kako to ide, s obzirom na GUTL, jer se vrlo brzo aktivira iz 80 zahtjeva, zar ne? Da vidimo da 100 ms ne znači Nisu ništa, ali moja visoka pozornost daje još 10 zahtjeva u odnosu na 70 do 80 sa 80 do 90

    1.    KZKG ^ Gaara rekao je

      To mora biti zbog reda ili broja maksimalnih niti kojima treba istovremeno prisustvovati. Međutim, test sam uradio bez gzip-a, bez ispuhivanja, bez predmemorije ili bilo čega drugog 😉

  3.   Charlie-brown rekao je

    Vrlo zanimljivo, posebno za upotrebu GNUPlota. Koliko vidim, može se koristiti za generiranje grafova iz gotovo bilo kojeg skupa podataka, zar ne? ...

    1.    KZKG ^ Gaara rekao je

      Da, naravno, podatke prosljeđujete u datoteci odvojenoj zarezima ili nečim sličnim, u konfiguracijskoj datoteci kažete kako se to obrađuje i voila

  4.   Adolfo rekao je

    Pozdrav, uvijek provodim vrijeme čitajući ovaj blog, ali nikada nisam komentirao nijedan članak, a ovo mi se čini kao dobra prilika.
    Ono što želim podijeliti s vama je da se ova vrsta grafa može pogrešno protumačiti, jer Apache Bench sortira rezultat koristeći ttime (ukupno vrijeme) umjesto sekvencijalnog vremena. Iako su podaci i dalje istiniti, grafikon vjerojatno ne pokazuje ono što želimo.
    Ovdje ostavljam vezu tamo gdje sam je pročitao.
    http://www.bradlanders.com/2013/04/15/apache-bench-and-gnuplot-youre-probably-doing-it-wrong/

    Pozdrav.

  5.   hugo rekao je

    Apache Benchmark nije najbolji alat za mjerenje performansi HTTP servera na računarima s više jezgara, osim toga, samo 100 zahtjeva s 20 istovremenih veza vrlo je slab test, nešto realnije bilo bi 1,000 ili 10,000 zahtjeva sa 100 istovremenih veza (poznato je da je Nginx jedna od aplikacija koja može poslužiti više od 10,000 zahtjeva u sekundi) i za to je bolje koristiti alat poput weighttp-a, koji je dizajniran za računare s više jezgara i koristi epoll koji je brži, za razliku od Apache Bench-a koji koristi jednu nit i manje efikasan mehanizam za rukovanje događajima.

    Da zaključim, pretpostavljajući da server ima samo 4 jezgre:

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

  6.   Fede rekao je

    Pozdrav svima,
    Pri crtanju grafa (iz CSV-a) pomoću gnuplota daje mi sljedeću grešku, možete li mi reći kako to riješiti?

    "Plot.p", red 8: upozorenje: Preskakanje datoteke podataka bez valjanih bodova

    zacrtajte «graph.csv» pomoću 9 glatkih sbeziera s naslovom linija «AB - localhost / web»
    ^
    "Plot.p", red 8: x domet je nevažeći

    Pomoću gnuplota, mogu li generirati i HTML stranice?