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.
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
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/
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:
- Gegevens van de server die we testen, evenals de URL in kwestie.
- Aantal verzoeken per seconde.
- 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.
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:
- Naam van het afbeeldingsbestand dat moet worden gegenereerd
- Totaal aantal en gelijktijdige verzoeken.
- Naam van het bestand dat we zojuist hebben gegenereerd.
- 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:
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!
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.
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
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
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 😉
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? ...
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
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.
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/"
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?