Det spiller ingen rolle om den brukes Nginx, Apache, Lighttpd eller annet, vil enhver nettverksadministrator som har en webserver på et eller annet tidspunkt ønsker å vite hvor raskt webserveren reagerer på et gitt antall spørsmål.
Apache Benchmark + GNUPlot
Denne gangen vil vi bruke et verktøy som heter Apache-målestokk, som selv om den har 'apache' i navnet, IKKE er bare for å måle Apache-ytelse, men kan også brukes til Nginx og andre. Egentlig vil jeg bruke den til å måle ytelsen til Nginx.
Vi vil også bruke GNUPlot, som vil hjelpe oss med å lage grafer som disse med noen få linjer:
Installere Apache Benchmark og GNUPlot
Apache Benchmark er et verktøy som vi kan bruke etter installasjon av Apache-pakken, GNUPlot vil være tilgjengelig etter installasjon av pakken med samme navn. Så da ...
På distros som Debian, Ubuntu eller lignende:
sudo apt-get install apache2 gnuplot
I distros som ArchLinux eller derivater:
sudo pacman -S apache gnuplot
Bruke Apache Benchmark
Det vi skal gjøre er å sende et spesifikt antall forespørsler (100) i grupper på flere (fra 20 til 20) til et bestemt nettsted. Vi lagrer resultatet i en .csv-fil (result.csv) og behandler det deretter med GNUPloit, linjen vil være:
ab -g resultados.csv -n 100 -c 20 http://nuestro-sitio-web.com/
Dette er utdata eller logg som viser meg når jeg tester et nettsted i nettverket mitt:
Dette er ApacheBench, versjon 2.3 <$ Revisjon: 1638069 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Lisensiert til Apache Software Foundation, http://www.apache.org/ Benchmarking gutl.jovenclub.cu (vær tålmodig) ..... ferdig Serverprogramvare: nginx Server Vertsnavn: gutl.jovenclub.cu Serverport: 80 Dokumentbane: / Dokumentlengde: 206 byte Samtidig nivå: 20 Tiden tatt for tester: 0.101 sekunder Komplette forespørsler: 100 Mislyktes forespørsler: 27 (Koble til: 0, Mottak: 0, Lengde: 27, Unntak: 0) Svar som ikke er 2xx: 73 Overført totalt: 1310933 byte HTML overført: 1288952 byte Forespørsler per sekund: 993.24 [# / sek] (gjennomsnitt) Tid per forespørsel: 20.136 [ms] (gjennomsnitt) Tid per forespørsel: 1.007 [ms] (gjennomsnitt, på tvers av alle samtidige forespørsler) Overføringshastighet: 12715.49 [Kbytes / sek] mottatt Tilkoblingstider (ms) min gjennomsnitt [+/- sd] median max Koble til: 0 1 0.2 1 1 Behandling: 1 17 24.8 4 86 Venter: 1 15 21.5 4 76 Totalt: 1 18 24.8 5 87 Prosentandel av forespørslene som serveres innen en viss tid (ms) 50% 5 66% 6 75% 22 80% 41 90% 62 95% 80 98% 87 99% 87 100% 87 (lengste forespørsel)
Jeg har merket med rødt det jeg anser for å være det viktigste, som har vært mer eller mindre:
- Data om serveren vi tester, samt den aktuelle URL-en.
- Antall forespørsler per sekund.
- Hvor mange millisekunder tok serveren for å ivareta forespørselen som tok lengst tid, det vil si den som tok lengst tid å bli besvart.
Med denne informasjonen kan de få en ide om hvor lang tid det vil ta for serveren å delta på den mengden forespørsler, de kan deretter legge til et bedre cache-system, deaktivere moduler som de ikke bruker, etc etc, kjøre testen på nytt og se om ytelsen er forbedret eller ikke.
Andre nyttige Apache-standardalternativer eller parametere:
-k -H 'Accept-Encoding: gzip, deflate' : Med denne aksepterer ab hurtigbufferen og komprimeringen som serveren har konfigurert, så tidene blir lavere.
-f urls.txt : Så i stedet for bare å teste nettstedets indeks, vil den utføre tester på URL-ene som vi spesifiserer i den filen.
Uansett ... ta en titt på mann ab for deg å se.
Vis resultatet i en graf:
Å sette denne utgangen i et bilde, det vil si i et mer visuelt medium og som mange ganger, er alt ledere klarer å forstå ... for dette vil vi bruke som jeg sa tidligere, GNUPlot
I samme mappe der vi har filresultatene.csv (husk, vi genererte nettopp med kommandoen ovenfor) vi skal lage en fil som heter gnuplot.p:
nano plot.p
I den vil vi sette følgende:
sett terminal png størrelse 600 sett utgang "results.png"sett tittel"100 forespørsler, 20 samtidige forespørsler "sett størrelsesforhold 0.6 sett rutenett og sett xlabel"forespørsler"sett ylabel"responstid (ms)"plott"results.csv"bruker 9 glatt sbezier med linjetittel"gutl.jovenclub.cu"
Jeg har merket med rødt hva du alltid bør sjekke. Det vil si og fra topp til bunn:
- Navnet på bildefilen som skal genereres
- Antall forespørsler totalt og samtidig.
- Navnet på filen vi nettopp genererte.
- Domene vi jobber med.
Når vi setter det inn, lagrer og avslutter (Ctrl + O y luego Ctrl + X), vil vi utføre følgende:
gnuplot plot.p
Og voila, som vil generere grafen med ønsket navn, min er:
Apache Benchmark har mange flere alternativer, det er også mange kombinasjoner som vi kan bruke for å gjøre ytelsestesten vår enda mer komplett.
Men hei, dette har vært det grunnleggende 😉
Nyt!
Interessant apache-referanse, hva gnuplot ikke visste er det mulig å endre stilen på utdataene? Jeg sier som for en formell rapport.
Hilsen fra Chile.
Ja, det er mange konfigurasjoner på nettet for gnuplot, søk på Google for å se om du finner noe seriøst eller profesjonelt nok til at du kan bruke det, for det er alles smak
Ummm, jeg skal teste det akkurat nå på en virtuell apache-server som jeg kjører for å se hvordan dette går, med hensyn til GUTL, da det avfyres veldig raskt fra 80 forespørsler, ikke sant? La oss se at 100 ms ikke er ingenting, men det høye som gir 10 flere forespørsler sammenlignet med 70 til 80 med 80 til 90, fanger min oppmerksomhet
Det må være på grunn av køen eller antall maksimale tråder som skal delta samtidig. Imidlertid gjorde jeg testen uten gzip, uten tømming, uten cache eller noe 😉
Veldig interessant, spesielt for bruk av GNUPlot. Fra det jeg ser kan det brukes til å generere grafer fra nesten alle datasett, ikke sant? ...
Ja selvfølgelig, du sender dataene i en fil atskilt med komma eller noe sånt, du forteller det hvordan du skal behandle det i konfigurasjonsfilen, og det er det
Hei, jeg bruker alltid det på å lese denne bloggen, men jeg har aldri kommentert noen artikkel, og dette virker som en god mulighet.
Det jeg vil dele med deg er at denne typen graf kan tolkes feil, fordi Apache Bench sorterer resultatet ved hjelp av ttime (total tid) i stedet for sekvensiell tid. Selv om dataene fremdeles er sanne, viser grafen sannsynligvis ikke hva vi vil ha.
Her er lenken der jeg leste den.
http://www.bradlanders.com/2013/04/15/apache-bench-and-gnuplot-youre-probably-doing-it-wrong/
Hilsener.
Apache Benchmark er ikke det beste verktøyet for å måle ytelsen til HTTP-servere på datamaskiner med flere kjerner. I tillegg er bare 100 forespørsler med 20 samtidige tilkoblinger en veldig svak test, noe mer realistisk vil være 1,000 eller 10,000 100 forespørsler med 10,000 samtidige tilkoblinger ( det er kjent at Nginx er en av applikasjonene som kan tjene mer enn XNUMX forespørsler per sekund), og for dette er det bedre å bruke et verktøy som weighttp, som er designet for multikjernedatamaskiner og bruker epoll som er raskere, i motsetning til Apache Benk som bruker en enkelt tråd og en mindre effektiv hendelseshåndteringsmekanisme.
For å lande poenget mitt, forutsatt at serveren bare har 4 kjerner:
veietp -n 10000 -c 100 -t 4 -k "http://our-web-site.com/"
Hei alle sammen,
Når du tegner grafen (fra CSV) med gnuplot, gir det meg følgende feil, kan du fortelle meg hvordan jeg skal løse det?
"Plot.p", linje 8: advarsel: Hopp over datafilen uten gyldige punkter
plotte «graph.csv» ved hjelp av 9 glatt sbezier med linjetittel «AB - localhost / web»
^
"Plot.p", linje 8: x-området er ugyldig
Kan jeg også generere HTML-sider med gnuplot?