Apache Benchmark + GNUPlot: mjerenje i grafički prikaz izvedbe vašeg web poslužitelja

Nije važno koristi li se Nginx, apaš, Lighttpd ili na bilo koji drugi način, bilo koji mrežni administrator koji ima web poslužitelj u jednom će trenutku htjeti znati koliko brzo web poslužitelj odgovara na zadani 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 ću ga koristiti za mjerenje performansi Nginx.

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

rezultati

Instaliranje Apache Benchmarka i GNUPlot-a

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

Na distribucijama poput Debiana, Ubuntua ili sličnih:

sudo apt-get install apache2 gnuplot

U distribucijama poput ArchLinux-a ili derivata:

sudo pacman -S apache gnuplot

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

Korištenje Apache Benchmarka

Ono što ćemo učiniti jest poslati određeni broj zahtjeva (100) u skupinama 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 web stranice koja se mjeri.

Ovo je izlaz ili zapisnik koji me prikazuje kada testiram web mjesto na svojoj mreži:

Ovo je ApacheBench, verzija 2.3 <$ Revizija: 1638069 $> Autorsko pravo 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 poslužitelja 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 Dovršeni zahtjevi: 100 Neuspjeli zahtjevi: 27 (Povezivanje: 0, primanje: 0, duljina: 27, iznimke: 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 Postotak zahtjeva koji su uručeni 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 označio sam ono što smatram najvažnijom, a to je bilo više-manje:

  1. Podaci poslužitelja koji testiramo, kao i predmetni URL.
  2. Broj zahtjeva u sekundi.
  3. Koliko je milisekundi poslužitelju trebalo da pristupi zahtjevu koji je najduže trajao, odnosno onom kojem je trebalo najviše vremena da mu se odgovori.

Pomoću ovih informacija mogu imati predodžbu o tome koliko će vremena trebati poslužitelju da pristupi toj količini zahtjeva, a zatim mogu dodati bolji sustav predmemorije, deaktivirati module koje ne koriste itd. Itd., Ponovno pokrenuti test i pogledajte je li se izvedba poboljšala ili ne.

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

Ostale korisne opcije ili parametri Apache Benchmarka:

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

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

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

Prikaz rezultata na grafikonu:

Da se ovaj izlaz stavi u sliku, odnosno u vizualniji medij i to mnogo puta, sve je što menadžeri uspijevaju razumjeti ... za ovo ćemo upotrijebiti 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 nazvanu gnuplot.p:

nano plot.p

U nju ćemo staviti sljedeće:

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

Crvenom sam bojom označio ono što biste uvijek trebali provjeriti. To je i od vrha do dna:

  1. Naziv slikovne datoteke koja se generira
  2. Broj ukupnih i istodobnih zahtjeva.
  3. Naziv datoteke koju smo upravo generirali.
  4. Domena na kojoj radimo.

Jednom kad to stavimo, spremimo i izađemo (Ctrl + O y luego 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 mogućnosti, također postoje mnoge kombinacije koje možemo koristiti kako bismo naš test performansi učinili još cjelovitijim.

Ali hej, ovo je bilo osnova 😉

Uživajte!


9 komentara, ostavi svoj

Ostavite svoj komentar

Vaša email adresa neće biti objavljen. Obavezna polja su označena s *

*

*

  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 obvezi.
  5. Pohrana podataka: Baza podataka koju hostira Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   Francisco dijo

    Zanimljiva referentna vrijednost apachea, nisam znao za gnuplot, je li moguće izmijeniti stil izlaza? Kažem što se tiče službenog izvještaja.

    Pozdrav iz Čilea.

    1.    KZKG ^ Gaara dijo

      Da, na mreži postoji puno konfiguracija za gnuplot, pretražite Google da biste utvrdili jeste li pronašli dovoljno ozbiljnog ili profesionalnog čovjeka da ga možete koristiti, jer to je gušt svima

  2.   Wolf119 dijo

    Ummm, testirat ću ga sada na virtualnom poslužitelju Apache 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 nije ništa, ali mi privlači pažnju visoka vrijednost koja daje još 10 zahtjeva u usporedbi sa 70 do 80 s 80 do 90

    1.    KZKG ^ Gaara dijo

      To mora biti zbog reda ili broja maksimalnih niti koje treba istovremeno prisustvovati. Međutim, test sam obavio bez gzipa, bez ispuhivanja, bez predmemorije ili bilo čega 😉

  3.   Charlie-brown dijo

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

    1.    KZKG ^ Gaara dijo

      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 dijo

    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 jest da se ova vrsta grafikona 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 što želimo.
    Evo linka na kojem sam ga pročitao.
    http://www.bradlanders.com/2013/04/15/apache-bench-and-gnuplot-youre-probably-doing-it-wrong/

    Pozdrav.

  5.   Hugo dijo

    Apache Benchmark nije najbolji alat za mjerenje performansi HTTP poslužitelja na računalima s više jezgri, 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, koji je dizajniran za računala s više jezgara i koristi epoll koji je brži, za razliku od Apachea Klupa koja koristi jednu nit i manje učinkovit mehanizam za obradu događaja.

    Da zaključim, pretpostavljajući da poslužitelj ima samo 4 jezgre:

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

  6.   vjera dijo

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

    "Plot.p", redak 8: upozorenje: Preskakanje datoteke podataka bez valjanih točaka

    zacrtati «graph.csv» pomoću 9 glatkih sbeziera s naslovom linija «AB - localhost / web»
    ^
    "Plot.p", redak 8: x raspon nije važeći

    Pomoću gnuplota mogu li generirati i HTML stranice?