Apache Benchmark + GNUPlot: meet en grafiek de prestaties van uw webserver

Het maakt niet uit of het wordt gebruikt Nginx, apache, Lighttpd of anders, elke netwerkbeheerder die een webserver heeft, zal op een gegeven moment willen weten hoe snel de webserver reageert op een bepaald aantal vragen.

Managed-services-serverbeheer-e1368625038693

Apache-benchmark + GNUPlot

Deze keer gebruiken we een tool genaamd Apache-benchmark, dat hoewel het 'apache' in zijn naam heeft, NIET alleen is voor het meten van Apache-prestaties, maar ook kan worden gebruikt voor Nginx en anderen. Eigenlijk zal ik het gebruiken om de prestaties van Nginx.

We zullen ook gebruiken GNUPlot, waarmee we grafieken zoals deze kunnen maken met een paar lijnen:

Apache Benchmark en GNUPlot installeren

Apache Benchmark is een tool die we kunnen gebruiken na installatie van het Apache-pakket, GNUPlot zal beschikbaar zijn na installatie van het pakket met dezelfde naam. Dus dan ...

Op distributies zoals Debian, Ubuntu of iets dergelijks:

sudo apt-get install apache2 gnuplot

In distributies zoals ArchLinux of afgeleiden:

sudo pacman -S apache gnuplot

We hoeven alleen het Apache-pakket te installeren, we hoeven het niet te starten of iets anders te configureren, alleen installeren is voldoende.

Apache Benchmark gebruiken

Wat we doen is een specifiek aantal verzoeken (100) in groepen van meerdere (van 20 tot 20) naar een specifieke site sturen. We slaan het resultaat op in een .csv-bestand (result.csv) en verwerken het vervolgens met GNUPloit, de regel zou zijn:

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

Het is erg belangrijk om de laatste / in de URL van de te meten site te plaatsen.

Dit is de output of het logboek dat me laat zien wanneer ik een site op mijn netwerk test:

Dit is ApacheBench, versie 2.3 <$ Revisie: 1638069 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ In licentie gegeven aan The Apache Software Foundation, http://www.apache.org/ Benchmarking gutl.jovenclub.cu (wees geduldig) ..... klaar

Serversoftware: nginx Hostnaam server: gutl.jovenclub.cu Serverpoort: 80

Documentpad: /
Documentlengte: 206 bytes Gelijktijdigheidsniveau: 20 Tijd nodig voor tests: 0.101 seconden Voltooide verzoeken: 100 Mislukte verzoeken: 27 (Verbinding: 0, Ontvangen: 0, Lengte: 27, Uitzonderingen: 0) Niet-2xx-antwoorden: 73 Totaal overgedragen: 1310933 bytes HTML overgedragen: 1288952 bytes
Verzoeken per seconde: 993.24 [# / sec] (gemiddeld)
Tijd per verzoek: 20.136 [ms] (gemiddeld) Tijd per verzoek: 1.007 [ms] (gemiddeld, voor alle gelijktijdige verzoeken) Overdrachtssnelheid: 12715.49 [Kbytes / sec] ontvangen Verbindingstijden (ms) min gemiddeld [+/- sd] mediaan max Connect: 0 1 0.2 1 1 Verwerking: 1 17 24.8 4 86 Wachten: 1 15 21.5 4 76 Totaal: 1 18 24.8 5 87 Percentage verzoeken binnen een bepaalde tijd (ms) 50% 5 66% 6 75% 22 80% 41 90% 62 95% 80 98% 87 99% 87
100% 87 (langste verzoek)

Ik heb in rood gemarkeerd wat ik als het belangrijkste beschouw, en dat is min of meer:

  1. Gegevens van de server die we testen, evenals de URL in kwestie.
  2. Aantal verzoeken per seconde.
  3. Hoeveel milliseconden het duurde voordat de server het verzoek bijwoonde dat het langst duurde, dat wil zeggen het langst duurde om te worden beantwoord.

Met deze informatie kunnen ze een idee hebben van hoe lang het duurt voordat de server dat aantal verzoeken bijwoont, ze kunnen dan een beter cachesysteem toevoegen, modules deactiveren die ze niet gebruiken, enz., De test uitvoeren opnieuw en kijk of de prestaties zijn verbeterd of niet.

Ik raad aan om de test 2 of 3 keer uit te voeren, zodat je zoiets als een marge creëert, aangezien de resultaten van twee tests op rij zelden identiek zijn.

Andere handige Apache Benchmark-opties of -parameters:

-k -H 'Accept-codering: gzip, deflate' : Met deze ab accepteert u de cache en compressie die de server heeft geconfigureerd, dus de tijden zullen korter zijn.

-f URL's.txt : Dus in plaats van alleen de index van de site te testen, zal het tests uitvoeren op de URL's die we in dat bestand specificeren.

Hoe dan ook ... neem een ​​kijkje man ab voor jou om te zien.

Toon het resultaat in een grafiek:

Om deze output in een beeld te plaatsen, dat wil zeggen in een meer visueel medium en dat is vaak alles wat managers weten te begrijpen ... hiervoor zullen we gebruiken zoals ik al eerder zei, GNUPlot

In dezelfde map waar we het bestand results.csv (onthoud dat we zojuist gegenereerd hebben met het bovenstaande commando) gaan we een bestand maken met de naam gnuplot.p:

nano plot.p

Daarin zullen we het volgende plaatsen:

set terminal png size 600 set output "results.png"set title"100 verzoeken, 20 gelijktijdige verzoeken "set size ratio 0.6 set grid and set xlabel"verzoeken"set ylabel"reactietijd (ms)"verhaal"resultaten.csv"gebruik 9 gladde sbezier met regel titel"gutl.jovenclub.cu"

Ik heb in rood aangegeven wat je altijd moet controleren. Dat is en van boven naar beneden:

  1. Naam van het afbeeldingsbestand dat moet worden gegenereerd
  2. Totaal aantal en gelijktijdige verzoeken.
  3. Naam van het bestand dat we zojuist hebben gegenereerd.
  4. Domein waar we aan werken.

Zodra we dat hebben ingevoerd, opslaan en afsluiten (Ctrl + O y luego Ctrl + X), voeren we het volgende uit:

gnuplot plot.p

En voila, dat zal de grafiek met de gewenste naam genereren, de mijne is:

resultaten2

Het einde!

Apache Benchmark heeft veel meer opties, er zijn ook veel combinaties die we kunnen gebruiken om onze prestatietest nog completer te maken.

Maar goed, dit was de basis 😉

Geniet!


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.

  1.   Francisco zei

    Interessante apache-benchmark, ik kende gnuplot niet, is het mogelijk om de stijl van de uitvoer te wijzigen? Ik zeg wat betreft een formeel rapport.

    Groeten uit Chili.

    1.    KZKG ^ Gaara zei

      Ja, er zijn veel configuraties op het net voor gnuplot, zoek op Google om te zien of je iets serieus of professioneel genoeg vindt om het te gebruiken, want dat is ieders smaakvreugde

  2.   Wolf119 zei

    Ummm, ik ga het nu testen op een virtuele apache-server die ik heb om te zien hoe dit gaat, met betrekking tot GUTL, aangezien het zeer snel vuurt vanaf 80 verzoeken, toch? Laten we eens kijken dat 100 ms dat niet doet. niets, maar de high die 10 meer verzoeken geeft in vergelijking met 70 tot 80 met 80 tot 90 trekt mijn aandacht

    1.    KZKG ^ Gaara zei

      Dit moet te wijten zijn aan de wachtrij of het maximale aantal threads dat tegelijkertijd moet worden bezocht. Ik heb de test echter gedaan zonder gzip, zonder leeglopen, zonder cache of iets anders 😉

  3.   Charlie-bruin zei

    Heel interessant, zeker voor het gebruik van GNUPlot. Van wat ik zie, kan het worden gebruikt om grafieken te genereren uit bijna elke dataset, toch? ...

    1.    KZKG ^ Gaara zei

      Ja natuurlijk, je geeft de gegevens door in een bestand gescheiden door komma's of iets dergelijks, je vertelt het hoe het moet worden verwerkt in het configuratiebestand, en voila

  4.   Adolfo zei

    Hallo, ik besteed het altijd aan het lezen van deze blog, maar ik heb nog nooit op een artikel gereageerd, en dit lijkt een goede gelegenheid.
    Wat ik met je wil delen, is dat dit type grafiek verkeerd kan worden geïnterpreteerd, omdat Apache Bench het resultaat sorteert met ttime (totale tijd) in plaats van sequentiële tijd. Hoewel de gegevens nog steeds waar zijn, laat de grafiek waarschijnlijk niet zien wat we willen.
    Hier laat ik de link waar ik hem gelezen heb.
    http://www.bradlanders.com/2013/04/15/apache-bench-and-gnuplot-youre-probably-doing-it-wrong/

    Groeten.

  5.   Hugo zei

    Apache Benchmark is niet de beste tool om de prestaties van HTTP-servers te meten in computers met meerdere kernen, bovendien is slechts 100 verzoeken met 20 gelijktijdige verbindingen een zeer zwakke test, iets realistischer zou zijn 1,000 of 10,000 verzoeken met 100 gelijktijdige verbindingen ( het is bekend dat Nginx een van de applicaties is die meer dan 10,000 verzoeken per seconde kunnen verwerken) en hiervoor is het beter om een ​​tool zoals weighttp te gebruiken, die is ontworpen voor multi-core computers en epoll gebruikt dat sneller is, in tegenstelling tot Apache Bank die een enkele draad gebruikt en een minder efficiënt mechanisme voor het afhandelen van gebeurtenissen.

    Om mijn punt te laten zien, ervan uitgaande dat de server slechts 4 cores heeft:

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

  6.   geloof zei

    Hallo iedereen,
    Bij het tekenen van de grafiek (van de CSV) met gnuplot krijg ik de volgende foutmelding, kun je me vertellen hoe ik het moet oplossen?

    "Plot.p", regel 8: waarschuwing: gegevensbestand zonder geldige punten overslaan

    plot «graph.csv» met behulp van 9 gladde sbezier met regels titel «AB - localhost / web»
    ^
    "Plot.p", regel 8: bereik x is ongeldig

    Kan ik met gnuplot ook HTML-pagina's genereren?