Det spelar ingen roll om den används nginx, Apache, Lighttpd eller på annat sätt, alla nätverksadministratörer som har en webbserver kommer någon gång att vilja veta hur snabbt webbservern svarar på ett visst antal frågor.
Apache-riktmärke + GNUPlot
Den här gången använder vi ett verktyg som heter Apache-riktmärke, som trots att den har 'apache' i sitt namn, INTE bara är för att mäta Apache-prestanda, men kan också användas för Nginx och andra. Egentligen ska jag använda den för att mäta prestanda för nginx.
Vi kommer också att använda GNUPlot, vilket hjälper oss att skapa diagram som dessa med några rader:
Installerar Apache Benchmark och GNUPlot
Apache Benchmark är ett verktyg som vi kan använda efter att ha installerat Apache-paketet, GNUPlot kommer att finnas tillgängligt efter att ha installerat paketet med samma namn. Dåså ...
På distros som Debian, Ubuntu eller liknande:
sudo apt-get install apache2 gnuplot
I distributioner som ArchLinux eller derivat:
sudo pacman -S apache gnuplot
Använda Apache-riktmärket
Vad vi kommer att göra är att skicka ett specifikt antal förfrågningar (100) i grupper om flera (från 20 till 20) till en specifik webbplats. Vi sparar resultatet i en .csv-fil (result.csv) och bearbetar det sedan med GNUPloit, raden skulle vara:
ab -g resultados.csv -n 100 -c 20 http://nuestro-sitio-web.com/
Det här är utdata eller logg som visar mig när jag testar en webbplats i mitt nätverk:
Detta är ApacheBench, version 2.3 <$ Revision: 1638069 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensierat till Apache Software Foundation, http://www.apache.org/ Benchmarking gutl.jovenclub.cu (ha tålamod) ... gjort Serverprogramvara: nginx Servervärdnamn: gutl.jovenclub.cu Serverport: 80 Dokumentväg: / Dokumentlängd: 206 byte Samtidig nivå: 20 Tid för tester: 0.101 sekunder Kompletta förfrågningar: 100 Misslyckade förfrågningar: 27 (Anslut: 0, Mottag: 0, Längd: 27, Undantag: 0) Svar som inte är 2xx: 73 Överfört totalt: 1310933 byte HTML överförd: 1288952 byte Förfrågningar per sekund: 993.24 [# / sek] (medelvärde) Tid per förfrågan: 20.136 [ms] (medelvärde) Tid per förfrågan: 1.007 [ms] (medelvärde, över alla samtidiga förfrågningar) Överföringshastighet: 12715.49 [Kbytes / sek] mottagna Anslutningstider (ms) min. Medelvärde [+/- sd] median max Anslut: 0 1 0.2 1 1 Bearbetning: 1 17 24.8 4 86 Väntar: 1 15 21.5 4 76 Totalt: 1 18 24.8 5 87 Andel av förfrågningarna som serveras inom en viss tid (ms) 50% 5 66% 6 75% 22 80% 41 90% 62 95% 80 98% 87 99% 87 100% 87 (längsta begäran)
Jag har markerat med rött vad jag anser vara det viktigaste, som har varit mer eller mindre:
- Uppgifter om servern som vi testar samt URL i fråga.
- Antal förfrågningar per sekund.
- Hur många millisekunder tog servern för att betjäna den begäran som tog längst, det vill säga den som tog längst tid att besvaras.
Med den här informationen kan de få en uppfattning om hur lång tid det tar för servern att delta i den mängd förfrågningar, de kan sedan lägga till ett bättre cachesystem, inaktivera moduler som de inte använder, etc etc, kör testet igen och se om prestandan förbättrats eller inte .
Andra användbara alternativ eller parametrar för Apache-riktmärke:
-k -H 'Acceptera-kodning: gzip, tömma' : Med detta accepterar ab cache och komprimering som servern har konfigurerat, så tiderna blir lägre.
-f urls.txt : Så istället för att bara testa webbplatsens index kommer det att utföra tester på webbadresserna som vi anger i den filen.
Hur som helst ... ta en titt på man ab för dig att se.
Visa resultatet i en graf:
Att sätta denna utdata i en bild, det vill säga i ett mer visuellt medium och så många gånger, är det allt som chefer lyckas förstå ... för detta kommer vi att använda som jag sa tidigare, GNUPlot
I samma mapp där vi har filresultaten.csv (kom ihåg, vi genererade precis med ovanstående kommando) vi ska skapa en fil som heter gnuplot.p:
nano plot.p
I den kommer vi att lägga följande:
ställa in terminal png storlek 600 sätt utgång "results.png"ange titel"100 begäranden, 20 samtidiga begäranden "ställa in storleksförhållande 0.6 ställa in rutnät och ställa in xlabel"begäranden"set ylabel"svarstid (ms)"komplott"resultat.csv"använder 9 smidig sbezier med rader titel"gutl.jovenclub.cu"
Jag har markerat med rött vad du alltid bör kontrollera. Det är och från topp till botten:
- Namnet på den bildfil som ska genereras
- Antal totala och samtidiga förfrågningar.
- Namnet på filen som vi just skapade.
- Domän vi arbetar med.
När vi har lagt in det, spara och avsluta (Ctrl + O och då Ctrl + X) kommer vi att utföra följande:
gnuplot plot.p
Och voila, som kommer att generera grafen med önskat namn, mitt är:
Apache Benchmark har många fler alternativ, det finns också många kombinationer som vi kan använda för att göra vårt prestandatest ännu mer komplett.
Men hej, det här har varit grunderna 😉
Njut!
Intressant apache-riktmärke, jag visste inte om gnuplot, är det möjligt att ändra stilen på utdata? Jag säger som för en formell rapport.
Hälsningar från Chile.
Ja, det finns många konfigurationer på nätet för gnuplot, sök efter Google för att se om du hittar något seriöst eller professionellt nog för att du ska kunna använda det, för det är allas smak 🙂
Ummm Jag ska testa det just nu på en virtuell apache-server som jag kör för att se hur detta går, med avseende på GUTL, eftersom det avfyras mycket snabbt från 80 förfrågningar, eller hur? Låt oss se att 100 ms inte gör det De är ingenting, men det höga som ger 10 fler förfrågningar jämfört med 70 till 80 med 80 till 90 väcker min uppmärksamhet
Det måste bero på att kön eller antalet maximala trådar ska delta samtidigt. Men jag gjorde testet utan gzip, utan tömning, utan cache eller något 😉
Mycket intressant, särskilt för användning av GNUPlot. Från vad jag ser kan det användas för att generera grafer från nästan alla datamängder, eller hur? ...
Ja naturligtvis, du skickar data i en fil åtskild med kommatecken eller något liknande, du berättar för det hur du bearbetar det i konfigurationsfilen, och voila
Hej, jag spenderar alltid på att läsa den här bloggen men jag har aldrig kommenterat någon artikel, och det här verkar vara ett bra tillfälle.
Vad jag vill dela med dig är att denna typ av diagram kan tolkas felaktigt, eftersom Apache Bench sorterar resultatet med ttime (total tid) istället för sekventiell tid. Även om uppgifterna fortfarande är sanna, visar grafen förmodligen inte vad vi vill ha.
Här lämnar jag länken där jag läste den.
http://www.bradlanders.com/2013/04/15/apache-bench-and-gnuplot-youre-probably-doing-it-wrong/
Hälsningar.
Apache Benchmark är inte det bästa verktyget för att mäta HTTP-servrarnas prestanda på datorer med flera kärnor. Dessutom är bara 100 förfrågningar med 20 samtidiga anslutningar ett mycket svagt test, något mer realistiskt skulle vara 1,000 eller 10,000 100 förfrågningar med 10,000 samtidiga anslutningar (det är känt att Nginx är en av applikationerna som kan betjäna mer än XNUMX XNUMX förfrågningar per sekund) och för detta är det bättre att använda ett verktyg som weightttp, som är utformat för flerkärniga datorer och använder epoll som är snabbare, till skillnad från Apache Bench som använder en enda tråd och en mindre effektiv händelseshanteringsmekanism.
För att få fram min poäng, förutsatt att servern bara har fyra kärnor:
vägttp -n 10000 -c 100 -t 4 -k "http://our-web-site.com/"
Hej alla,
När jag ritar grafen (från CSV) med gnuplot ger det mig följande fel, kan du berätta för mig hur man löser det?
"Plot.p", rad 8: varning: Hoppar över datafilen utan giltiga poäng
plotta «graph.csv» med 9 smidig sbezier med rader titel «AB - localhost / web»
^
"Plot.p", rad 8: x-intervallet är ogiltigt
Kan jag också skapa HTML-sidor med gnuplot?