Apache Benchmark + GNUPlot: Mål og graf ytelsen til webserveren din

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.

Managed-Services-Server-Management-e1368625038693

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:

resultater

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

Vi trenger bare å installere Apache-pakken, vi trenger ikke å starte den eller konfigurere noe annet, bare å installere den vil være nok.

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/

Det er veldig viktig å sette den endelige / i URL-en til nettstedet som skal måles.

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:

  1. Data om serveren vi tester, samt den aktuelle URL-en.
  2. Antall forespørsler per sekund.
  3. 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.

Jeg anbefaler å kjøre testen 2 eller 3 ganger, slik at du lager noe som en margin, siden resultatene av to tester på rad sjelden er identiske.

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:

  1. Navnet på bildefilen som skal genereres
  2. Antall forespørsler totalt og samtidig.
  3. Navnet på filen vi nettopp genererte.
  4. 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:

resultater2

Slutten!

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!


9 kommentarer, legg igjen dine

Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.

  1.   Francisco sa

    Interessant apache-referanse, hva gnuplot ikke visste er det mulig å endre stilen på utdataene? Jeg sier som for en formell rapport.

    Hilsen fra Chile.

    1.    KZKG ^ Gaara sa

      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

  2.   Ulv119 sa

    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

    1.    KZKG ^ Gaara sa

      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 😉

  3.   Charlie Brown sa

    Veldig interessant, spesielt for bruk av GNUPlot. Fra det jeg ser kan det brukes til å generere grafer fra nesten alle datasett, ikke sant? ...

    1.    KZKG ^ Gaara sa

      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

  4.   Adolfo sa

    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.

  5.   Hugo sa

    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/"

  6.   tro sa

    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?