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.
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:
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
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/
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:
- Podaci servera koji testiramo, kao i URL o kojem je riječ.
- Broj zahtjeva u sekundi.
- 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.
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:
- Naziv datoteke slike koja će se generirati
- Broj ukupnih i istovremenih zahtjeva.
- Ime datoteke koju smo upravo generirali.
- 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:
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!
Zanimljivo upoređivanje apachea, nisam znao za gnuplot, je li moguće izmijeniti stil izlaza? Kažem za formalni izvještaj.
Pozdrav iz Čilea.
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 🙂
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
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 😉
Vrlo zanimljivo, posebno za upotrebu GNUPlota. Koliko vidim, može se koristiti za generiranje grafova iz gotovo bilo kojeg skupa podataka, zar ne? ...
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
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.
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/"
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?